OPTIONS请求跨域

问题:

 跨域问题:

        同源策略

           由于浏览器的同源策略,即属于不同域的页面之间不能相互访问各自的页面内容。

简单来说就是同协议,同域名,同端口

URL 说明 是否允许通信

http://www.a.com/a.js

http://www.a.com/b.js                 同一域名下 允许

http://www.a.com/lab/a.js

http://www.a.com/script/b.js       同一域名不同文件 允许

http://www.a.com:8080/a.js

http://www.a.com/b.js                 同一域名,不同端口 不允许

http://www.a.com/a.js

https://www.a.com/b.js               同一域名,不同协议 不允许

http://www.a.com/a.js

http://43.138.105.221/b.js           域名和域名对应ip 不允许

http://www.a.com/a.js

http://script.a.com/b.js                主域相同,子域不同 不允许

http://www.a.com/a.js

http://a.com/b.js                          同一域名,不同耳机域名(同上) 不允许 (cookie这种情况下也不允许访问)

http://www.cnblogs.com/a.js

http://www.a.com/b.js                 不同域名 不允许

解决方法:

大体思路:

1. 当浏览器访问非同源服务器时,先做一次OPTIONS预检。问一下是否允许访问。

2. 服务器返回响应,回应是否允许访问。

3. 浏览器如果得到肯定的答复,才发送真实的请求数据。

4. 服务器正常返回数据

详情请看以下:

跨源资源共享(CORS) - HTTP | MDN

具体实现:

@Configuration
public class MallCorsConfiguration {

    @Bean
    public CorsWebFilter corsWebFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration configuration = new CorsConfiguration();
        //配置跨域的信息
        configuration.addAllowedHeader("*");
        configuration.addAllowedMethod("*");
        configuration.addAllowedOrigin("*");
        source.registerCorsConfiguration("/**",configuration);
        return new CorsWebFilter(source);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值