总结下跨域问题及解决办法

跨域

引用知乎上写的比较好的一个定义:跨域是指从一个域名的网页去请求另一个域名的资源。比如从http://www.baidu.com/ 页面去请求 http://www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域。

跨域问题

1.出于安全考虑,一般浏览器默认不支持跨域请求,必须要求请求的接口端明确支持跨域才可以。
2.前端跨域请求默认不会携带cookie信息,这样会导致一些信息丢失,比如sessionId。

解决跨域

后端:
服务端给http头部设置( “Access-Control-Allow-Origin”:"*" )属性

前端:
为了解决跨域时不能携带cookie问题,前端需要设置
xhrFields: {
withCredentials: true
}

服务端配置

常用的springboot跨域配置:

  1. @CrossOrigin注解 ,对方法进行注解,说明该方法支持跨域,对类进行注解,说明该类所有方法支持跨域;
  2. WebMvcConfigurer接口,实现接口方法addCorsMappings;
  3. WebSecurityConfigurerAdapter ,继承该类,实现configure接口;

测试案例

跨域测试思路如下:
1:springboot在方法或类上配置@CrossOrigin注解或采用实现WebMvcConfigurer接口或继承WebSecurityConfigurerAdapter类
2:本地修改hosts文件,配置127.0.0.1域名映射两个域名(localhost、lcoalhost1)
3:在前端界面以一个不同的域名去调用接口方法(比如以localhost访问静态页面,然后通过localhost1去调用服务端接口,这样就模拟了跨域)

案例代码

https://github.com/ingorewho/do-test/tree/master/crosorigin-test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值