Spring MVC 与 CORS 跨域的详细介绍 本文对 Spring MVC 与 CORS 跨域的详细介绍,包括 CORS 的知识点和如何在 Spring MVC 中配置 CORS。 CORS 简介 同源策略(same origin policy)是浏览器安全的基石。在同源策略的限制下,非同源的网站之间不能发送 AJAX 请求的。为了解决这个问题,W3C 提出了跨源资源共享,即 CORS(Cross-Origin Resource Sharing)。CORS 做到了两点:一是不破坏即有规则,二是服务器实现了 CORS 接口,就可以跨源通信。 简单请求 简单请求可以先看下 CORS 出现前的情况:跨源时能够通过 script 或者 image 标签触发 GET 请求或通过表单发送一条 POST 请求,但这两种请求 HTTP 头信息中都不能包含任何自定义字段。简单请求对应该规则,因此对简单请求的定义为:请求方法是 HEAD、GET 或 POST 且 HTTP 头信息不超过以下几个字段:Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type(只限于 application/x-www-form-urlencoded、multipart/form-data、text/plain)。 对于简单请求,CORS 的策略是请求时,在头信息中添加一个 Origin 字段,服务器收到请求后,根据该字段判断是否允许该请求。如果允许,则在 HTTP 头信息中添加 Access-Control-Allow-Origin 字段,并返回正确的结果。如果不允许,则不在头信息中添加 Access-Control-Allow-Origin 字段。浏览器先于用户得到返回结果,根据有无 Access-Control-Allow-Origin 字段来决定是否拦截该返回结果。 非简单请求 非简单请求除了简单请求之外的请求,就是非简单请求。对于非简单请求的跨源请求,浏览器会在真实请求发出前,增加一次 OPTION 请求,称为预检请求(preflight request)。预检请求将真实请求的信息,包括请求方法、自定义头字段、源信息添加到 HTTP 头信息字段中,询问服务器是否允许这样的操作。 CORS 相关字段 除了 Access-Control-Allow-Origin 之外,还有几个字段用于描述 CORS 返回结果: * Access-Control-Allow-Credentials:可选,用户是否可以发送、处理 cookie。 * Access-Control-Expose-Headers:可选,可以让用户拿到的字段。有几个字段无论设置与否都可以拿到的,包括:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。 Spring MVC 中配置 CORS 在 Spring MVC 中配置 CORS 需要在 Controller 中添加 @CrossOrigin 注解,例如: ```java @CrossOrigin(origins = "http://www.examples.com") @RequestMapping("/test") public String test() { return "Hello World!"; } ``` 这将允许来自 http://www.examples.com 的跨源请求访问 /test 接口。 总结 本文对 Spring MVC 与 CORS 跨域的详细介绍,包括 CORS 的知识点和如何在 Spring MVC 中配置 CORS。CORS 将请求分为两类:简单请求和非简单请求。简单请求可以在头信息中添加一个 Origin 字段,服务器收到请求后,根据该字段判断是否允许该请求。非简单请求需要增加一次 OPTION 请求,询问服务器是否允许这样的操作。
- 小小二-yan2023-07-27文章结构清晰,逻辑条理,让人容易理解。不会让人感到困惑。
- 一曲歌长安2023-07-27通过阅读这篇文章,我成功解决了我项目中的跨域问题。非常感谢作者的分享和帮助。
- lowsapkj2023-07-27作者对于跨域问题的解决方案进行了全面的讲解,对于开发者来说非常实用。
- WaiyuetFung2023-07-27这篇文章详细介绍了Spring MVC与CORS跨域的概念和原理,对于初学者来说非常友好。
- 丽龙2023-07-27文中提供了实际的代码示例,让读者通过实践加深对跨域的理解。
- 粉丝: 2
- 资源: 887
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助