API-Server构建指南(4)-跨域

跨域的前世今生系列。
核心: 跨域是浏览器的安全策略
跨域的具体规则 可参考https://blog.csdn.net/qq_38128179/article/details/84956552

可能产生跨域问题的地方,本来只有浏览器,,浏览器在发送请求的 时候,根据请求的源的策略,来鉴定此请求是否跨域。
需要注意的点是。
本来,跨域只是个浏览器的 概念,但是根据spring最新版本 的 默认 跨域策略为。
首先请求中 是否 包含 Origin 这个 header。如不包含此 header,则认为请求不来源于浏览器/无需跨域验证。在有Origin header的时候,则根据服务端配置的 跨域规则来确定是否允许此请求。

如果想要请求一定能通过,则需要保证

  1. 请求 中没有 Origin 这个 header
  2. 服务端不进行跨域校验
  3. 请求 中有 Origin 这个 header,并且 服务端开启了 跨域校验 的情况下,则 需要 保证规则的命中。

另:某些前端的请求库,根据 http标准,在 发现自己是 跨域请求 的 同时 会先发送 一个 OPTION 请求。服务端必须响应此请求,返回一个httpstatus 200 的 空 的响应。错误范例:返回一个 404/或者当做正常请求处理,均会导致无法正常响应。

浏览器在发现本请求 没有 跨域 时,将 不会 携带 Origin 这个 header

出于浏览器安全策略 web 请求库 ,无法强制修改 header 中 的 Origin

在某些框架 下的应用 如 Electron 。其可以将web应用编译为 桌面版 应用,在没有设置的 情况下,其请求 可能会 自带 一个 Origin 的header,值是 类似于 chrom://12312312 的一串字符串,服务端无法配置一个特定的规则来识别 这个 Origin,需要Electron应用 手动配置此Origin为一个特定的 值,或者不传递此Origin。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    他方l阅读 1,097评论 0 2
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    Yaoxue9阅读 1,364评论 0 6
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    HeroXin阅读 875评论 0 4
  • http://www.91ri.org/tag/fuzz-bug 通常情况下,有三种方法被广泛用来防御CSRF攻击...
    jdyzm阅读 4,253评论 0 5
  • 上周末一天在家,学习区块链的技术资料。区块链是最近比较火热的话题,在微信指数上一度排到第二。 你最近大概天天会看到...
    Scalers阅读 289评论 0 2