ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java跨域配置

2022-01-03 17:00:08  阅读:177  来源: 互联网

标签:control Java 跨域 origins 配置 access 客户端 CrossOrigin


Java跨域配置

XML 配置全局

如果整个项目所有方法都可以访问,则可以这样配置

<mvc:cors>
    <mvc:mapping path="/**" />
</mvc:cors>

/**
其中* 表示匹配到下一层
 
** 表示后面不管有多少层,都能匹配。

请求路径有/cross/,方法示例如下:

<mvc:cors>  
    <mvc:mapping path="/cross/*"/>  
</mvc:cors>  

上面表示有/cross/路径的请求都支持跨域访问,也可以增加其它的,如下:

<mvc:cors>  
    <mvc:mapping path="/cross/**" allowed-origins="" max-age="2500"/>  
    <mvc:mapping path="/domain/**"/>  
</mvc:cors> 

详细配置:

<mvc:cors>
    <mvc:mapping path="/**"
                 allowed-origins="http://127.0.0.1:5500"
                 allowed-methods="POST,GET,OPTIONS,DELETE,PUT,PATCH"
                 allowed-headers="Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"
                 allow-credentials="true"/>
</mvc:cors>
<!--配置跨域-->
    <mvc:cors>
        <!--path:允许跨域请求的映射地址:/api/**-->
        <!--allowed-origins:指定允许跨域请求的路径,*表示任意所有,也显式指定值,值可以有多个,如:http://192.168.2.75,https://www.test.com-->
        <!--allowed-methods:指定允许跨域的请求方式,值可以有多个,用逗号隔开,如:get,post,put,delete,options-->
        <!--allowed-headers:指定允许跨域的请求头,值可以有多个,用逗号隔开-->
        <!--allow-credentials:是否允许客户端请求时携带资源,如cookie,值默认false,表示不允许-->
        <!--值为*都是表示任意,不限制-->
        <mvc:mapping path="/**" allowed-origins="*" allowed-methods="*" allowed-headers="*" allow-credentials="true"/>
        <!--实际开发中不建议使用*代码所有,不安全-->
        <!--<mvc:mapping path="/**" allowed-origins="http://192.168.2.75,http://www.test.com" allowed-methods="GET,POST"/>-->
    </mvc:cors>

实际开发中:

​ allowed-origins:一般都会明确指定客户端的url

​ allowed-methods:值一般都为"get,post,put,delete,options"

通过注解的方式允许跨域

在Controller类或其方法上加@CrossOrigin注解,来使之支持跨域

@CrossOrigin(origins = "*")

其中origins为CrossOrigin的默认参数,即跨域来源,* 即任何来源,也可以是其他域名。即可以以以下形式:

@CrossOrigin(origins="http://127.0.0.1:5500/")

SpringBoot的配置方式

@Configuration
public class MvcConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")//指定跨域映射地址
                        .allowedOrigins("http://127.0.0.1:5500/")//实际开发中需要指定客户端具体url
                        .allowedMethods("GET","POST","PUT", "DELETE","OPTIONS")
                        .allowedHeaders("*")//设置允许的请求头
                        //设置需要暴露给客户端获取的响应头内容
//                        .exposedHeaders("access-control-allow-headers",
//                            "access-control-allow-methods",
//                            "access-control-allow-origin",
//                            "access-control-max-age",
//                            "X-Frame-Options")
                        .allowCredentials(true)//设置是否允许客户端跨域携带验证数据,如Cookie值
                        .maxAge(3600);//跨域请求超时
            }
        };
    }
}

可能出现的问题:500错误

错误配置:

<mvc:cors>
    <mvc:mapping path="/**"
                 allowed-origins="*"           // 此处变化
                 allowed-methods="POST,GET,OPTIONS,DELETE,PUT,PATCH"
                 allowed-headers="Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"
                 allow-credentials="true"/>
</mvc:cors>

修改为:

<mvc:cors>
    <mvc:mapping path="/**"
                 allowed-origins="http://127.0.0.1:5500"
                 allowed-methods="POST,GET,OPTIONS,DELETE,PUT,PATCH"
                 allowed-headers="Content-Type,Access-Control-Allow-Headers,Authorization,X-Requested-With"
                 allow-credentials="true"/>
</mvc:cors>

标签:control,Java,跨域,origins,配置,access,客户端,CrossOrigin
来源: https://www.cnblogs.com/langstring/p/15759891.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有