SpringBoot跨域设置(CORS)

本文介绍了什么是跨域及其同源策略,详细讲解了跨域资源共享(CORS)机制,包括简单请求和非简单请求的区别。并重点探讨了SpringBoot设置CORS的三种方法:配置过滤器CorsFilter、实现WebMvcConfigurer接口和使用@CrossOrigin注解。
摘要由CSDN通过智能技术生成

目录


一、什么是跨域

请求url的协议域名端口三者有任意一个不同即为跨域。跨域问题是因为浏览器的同源策略的限制而产生的。

  • 同源:请求url的协议、域名、端口三者都相同即为同源(同一个域)。

  • 同源策略:同源策略(Sameoriginpolicy)是一种约定,他是浏览器最核心也最基本的安全功能。同源策略会阻止非同源(同一个域)的内容进行交互。

同源策略的限制:

  • 无法读取非同源网页的Cookie、LocalStorage和IndexedDB
  • 无法接触非同源网页的DOM
  • 无法向非同源地址发送AJAX请求

浏览器的同源策略会限制跨域请求,限制的方式一般有两种:

  1. 浏览器限制发起跨域请求;
  2. 跨域请求可以正常发起,但是返回的结果被浏览器拦截了。

一般浏览器都是第二种方式限制跨域请求,那就是说请求已到达服务器,并有可能对数据库里的数据进行了操作,但是返回的结果被浏览器拦截了,那么我们就获取不到返回结果,这是一次失败的请求,但是可能对数据库里的数据产生了影响。

为了防止这种情况的发生,规范要求,对这种可能对服务器数据产生副作用的HTTP请求方法,浏览器必须先使用OPTIONS方法发起一个预检请求,从而获知服务器是否允许该跨域请求:如果允许,就发送带数据的真实请求;如果不允许,则阻止发送带数据的真实请求。

二、跨域资源共享(CORS)

解决非同源内容无法交互的问题,目前主流的解决方案就是:CORS(跨域资源共享)

跨域资源共享(Cross-origin Resource Sharing)简称CORS,它突破了一个请求在浏览器发出只能在同源的情况下向服务器获取数据的限制。

CORS约定服务器端和浏览器在HTTP协议之上,通过一些额外HTTP头部信息,进行跨域资源共享的协商。服务器端和浏览器都必需遵循规范中的要求。

CORS把HTTP的跨域请求分成两类,简单请求非简单请求,不同请求按照不同的策略进行跨域资源共享协商。

1. 简单请求

简单跨域请求需满足的条件࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值