跨域问题的解决

跨域问题的原因是由于浏览器的安全策略,即同源策略。同源策略会阻止一个域的JavaScript脚本和另一个域的内容进行交互。协议、域名、端口三个相同,即为同源。

如图
在这里插入图片描述
协议http、域名都相同 但是端口不同,所以不是同源。

解决方法

1.在目标方法上增加注解 @CrossOrigin
在这里插入图片描述
2.添加CORS过滤器
在这里插入图片描述
3.实现WebMvcConfigurer 接口,重写addCorsMappings方法
在这里插入图片描述
4.nginx做反向代理 加了允许跨域的请求头

#CORS 配置
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
#是否允许cookie传输
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token';
            
 #针对浏览器的options预请求直接返回200,否则会被403 forbidden--invalie CORS request
if ( $request_method = 'OPTIONS' ) { 
		return 200;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值