聊聊CORS的过度设计缺陷

注:本文不讲CORS原理,且默认你已了解CORS,但对其中一些细节抱有同样的怀疑

同源策略

浏览器的同源策略自其诞生以来就一直存在,如何进行跨域Hack,一代又一代的前后端都为此费尽了心机。

首先可以肯定的是,同源策略的限制是合理的。因为,服务端后台接口就部署在那,任何人只要构造了一个正确的HTTP请求,都能得到服务器的应答。但很显然,我们不希望我们的接口任何人都能访问(事实上,因为大家采用的都是同一套HTTP标准,所以你永远也无法杜绝这件事的发生)。还有一个更直接的理由,越多人知道你的接口,你的接口就越危险。

但是既然存在跨域的普遍呼声,那么这个需求也是合理的。所以一个新的跨域规范诞生了,再也不需要丑陋的JSONP,更不需要域内代理浪费资源。这个规范叫,CORS(Cross-Origin-Resource-Sharing)-跨域资源共享。CORS需要服务端与客户端同时支持,客户端就是指浏览器,目前所有浏览器最新版本都已支持,如下图所示:

服务端的支持,常规做法是,在代码中用全局拦截器做处理。

 

一个潜伏了数十年的毒瘤

在讲服务器的支持逻辑之前,先讲个扩展话题。浏览器限制跨域请求,实际上有两种方式:
---请求正常发起,拦截返回数据
---在请求发起前拦截住

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值