Spring Boot CORS跨域资源共享实现方案

同源策略

  • 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能
  • 同源策略限制cookie 等信息的跨源网页读取,可以保护本地用户信息
  • 同源策略限制跨域 ajax 请求,可以保护被跨域请求的服务器中数据库用户信息
  • 简单来说,限制cookie 等信息的跨源网页读取是为了保护自己的信息,而限制跨域 ajax 请求,是为了保护别人的信息。
  • 跨域请求的本质是请求别人的信息,所以能否跨域请求,是由被请求的服务器决定的。

同源定义

一个 URL 有三部分组成:协议、域名(指向主机)、端口,只有这三个完全相同的 URL 才能称之为同源。下表给出了与 URL http://store.company.com/dir/page.html 的源进行对比的示例:

URL 结果 原因
http://store.company.com/dir2/other.html 同源 只有路径不同
http://store.company.com/dir/inner/another.html 同源 只有路径不同
https://store.company.com/secure.html 失败 协议不同
http://store.company.com:81/dir/etc.html 失败 端口不同 ( http:// 默认端口是 80)
http://news.company.com/dir/other.html 失败 主机不同

源的继承

在页面中通过 about:blank 打开新的页面(<a href="https://www.csdn.net/" target="_blank">about:blank</a>)或通过使用javascript:执行脚本时(<a href="javascript:js_method();"/>url 执行的脚本会继承打开该 URL 的文档的源,因为这些类型的 URLs 没有包含源服务器的相关信息。

源的更改

满足某些限制条件的情况下,页面可以修改它的源。可以通过脚本将 document.domain 的值设置为其当前域或其当前域的父域。如果将其设置为其当前域的父域,则这个较短的父域将用于后续源检查。

例如:假设 http://store.company.com/dir/other.html 文档中的一个脚本执行以下语句:

document.domain = "company.com";

这条语句执行之后,页面将会成功地通过与 http://company.com/dir/page.html 的同源检测(通过检查的前提是http://company.com/dir/page.html 也将其 document.domain 设置为“company.com”,以表明它允许子域名通过修改document.domain 的方式与其进行通信 ,使用 document.domain 来允许子域安全访问其父域时,必须在父域和子域中设置document.domain 为相同的值)。

company.com 不能设置 document.domain 为 othercompany.com,因为它不是 company.com 的父域。

跨域资源共享CORS

跨域请求的本质是请求别人的信息,所以能否跨域请求,是由被请求的服务器决定的。

简单请求

同时满足以下条件的请求称之为简单请求:

  • 请求方法是以下三种方法之一:
    • HEAD
    • GET
    • POST
  • HTTP的头信息不超出以下几种字段:
    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值