如何解决跨域问题

什么是跨域请求?

跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样。说白了就是ip、网络协议、端口都一样的时候,就是同一个域,否则就是跨域。

重写addCorsMappings函数的原理

CORS(Cross-Origin Resource Sharing)是一种跨域资源共享技术标准,其目的是为了解决前端的跨域请求。

和解决方案JSONP的对比

在Java EE开发中,最常见的前端跨域请求解决方案是JSONP, 但是JSONP只支持GET请求。

相比之下,CORS则支持多种HTTP请求方法。

GET请求的跨域流程

响应头中有一个Access-Control-Allow-Origin字段,用来记录可以访问该资源的域。当浏览器收到这样的响应头信息之后,提取出Access-Control-Allow-Origin字段中的值,发现该值包含当前页面所在的域,就知道这个跨域是被允许的。

POST和HEAD请求同理。

DELETE请求的处理过程

第一步

发送一个OPTIONS请求,代码如下:
在这里插入图片描述
这个请求询问服务端是否具备该资源的DELETE权限,服务端会给浏览器一个响应:
在这里插入图片描述
Allow头信息表示服务端支持的请求方法,支持则进入第二步。

第二步

浏览器发送DELETE请求,代码如下:
在这里插入图片描述
服务端给的响应:
在这里插入图片描述

实践

在传统的Java EE开发中,可以通过过滤器统一配置,而Spring Boot中对此则提供了更加简洁的解决方法(通过配置CORS来完成):通过重写WebMvcConfigurer的addCorsMapping方法实现后台服务解决跨域问题。

参考资料

  1. SpringBoot中重写addCorsMapping解决跨域
  2. springboot配置cors跨域原理与实践
  3. SpringBoot实现配置跨域请求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值