跨源资源共享 – CORS
什么是CORS
- CORS : Cross Origin Resource Share
- 所以国内的翻译是不准确的 Origin 不应该翻译成域,而是源, Origin 包含 协议,比如(http/https);域名,比如www.baidu.com;端口,如果有端口的话
- 之所以存在CORS问题,是因为浏览器中的XMLHttpRequest 和Fetch API都遵循same-origin policy 同源策略,但是图片,js,css是不需要遵循同源策略的
CORS 如何工作
- 对于简单请求(Simple Request)添加Http Headers,让服务器端描述哪个源可以读取该server的信息
- 服务器端响应中会有Header:Access-Control-Allow-Origin: *
- 浏览器端请求中要有Origin: www.example.com
- 对于对服务器资源有边际影响的请求(Preflighted Request),规范强制要求浏览器preflight该请求:通过Option请求向服务器获取允许的方法
- 浏览器先发送Option请求,并携带额外的Headers:
- Access-Control-Request-Method: POST
- Access-Control-Request-Headers: X-PINGOTHER, Content-Type
Springboot中服务器端CORS的配置
- 可以在方法级别或者类级别通过@CrossOrigin来配置Http Headers
- 可以在配置类中统一配置CorsRegistory类
- 文档资源:spring.io/guides/gs/r…