我想了解CORS.根据我的理解,它使您能够限制哪些域可以访问服务器上的资源.然而,这似乎并不完整.例如,我有一个没有启用CORS的Web服务.我无法通过jQuery从我的Web应用程序中访问此Web服务(该应用程序在localhost上运行).但是,我可以从Postman获得Web服务.所以,我有点困惑.是否有一些涉及CORS的额外客户端工作?
Mat*_*ion 62
服务器负责报告允许的来源.Web浏览器负责强制执行仅从允许的域发送的请求.
未启用CORS时,浏览器将依赖相同的源策略.浏览器仅允许与源相同的主机发出请求.当未明确允许来源时,假定相同的原始策略.
除浏览器之外的HTTP客户端将不使用相同的源策略或CORS.从这些其他HTTP客户端发出的请求没有源.除非Postman桌面应用程序模拟浏览器,否则它将能够向任何URL发出请求.
需要CORS和相同的原始策略,因为浏览器不会隐含地信任它访问的网站.它们不保护原始站点,它们保护接收交叉源请求的站点.
如果没有这些策略,可以通过广告网络或脚本注入来分发重复加载网站的简单脚本,然后加载脚本的任何浏览器都会导致对网站的拒绝服务攻击.使用CORS和相同的源策略,浏览器将限制此脚本的影响.
CORS示例:
Web浏览器从中加载页面www.example.com.该页面包含一个发出请求的脚本www.example.org.请求的来源是www.example.com.浏览器首先发出请求或发送OPTIONS请求(预检请求).当服务器www.example.org收到来自其他来源的请求时,www.example.org它会响应一个响应头Access-Control-Allow-Origin,该响应头告诉浏览器允许发出请求的来源.它也可以响应其他标题Access-Control-Allow-Methods,Access-Control-Allow-Headers并且可以限制允许的请求类型.当浏览器被告知允许的来源时,它将阻止来自不允许的来源的未来请求.
实际上这两者都有.您的浏览器将阻止CORS请求,除非请求的来源(即引荐来源URL域)位于目标上的白名单中,或者目标批准所有请求而不管来源.
在这两种情况下,都会添加所需的标头(Access-Control-Allow-Origin),告知浏览器可以将请求发送到目的地.
这可以确保具有恶意意图的人无法在用户不知情的情况下向另一个域发送请求.
| 归档时间: |
|
| 查看次数: |
22262 次 |
| 最近记录: |