Chrome 的 Advanced REST Client 不介意 CORS 限制,怎么样?
Chrome's Advanced REST Client doesn't mind CORS restrictions, how?
我开发了一个客户端和一个服务器应用程序。在服务器的 Web.config 中,我设置了 属性
<add name="Access-Control-Allow-Origin" value="http://domain.tld:4031" />
事实上,当我尝试连接安装在不同位置的客户端时,我被拒绝了。但是当我从同一个位置使用 Chrome 的 Advanced REST Client 时,我并没有被拒绝!
在扩展中,响应的 header 表示
Access-Control-Allow-Origin: http://www.domain.tld:4031
那么为什么我仍然得到“200 OK”的答案,以及我请求的数据?
更新:
我认为这个主题不足以回答:How does Google Chrome's Advanced REST client make cross domain POST requests?
我主要关心的是:为什么可以 "ask" 获得这些额外权限。我认为不应该允许客户只决定它收到的许可。我认为这仅取决于服务器。如果我只是 "ask" 获得访问您计算机上的数据的额外权限怎么办?这对我来说没有意义...
REST 客户端(或者实际上是浏览器)能够绕过 CORS 限制的原因是它是客户端保护。服务器没有责任提供这种保护,但它是大多数现代浏览器供应商实现的一项功能,以保护他们的用户免受 XSS-hazards 的侵害。
维基百科 CORS 页面的以下引述总结得很好
"Although some validation and authorization can be performed by the server, it is generally the browser's responsibility to support these headers and respect the restrictions they impose." - Wikipedia
您当然可以像引文所强调的那样,自己进行一些服务器端验证。然而, "Access-Control-Allow-Origin" header 更多的是向浏览器表明浏览器允许指定的来源是可以的。然后由浏览器决定是否要遵守此 header。例如,在以前的版本中 chrome 实际上存在一个标志来关闭同源策略。
我开发了一个客户端和一个服务器应用程序。在服务器的 Web.config 中,我设置了 属性
<add name="Access-Control-Allow-Origin" value="http://domain.tld:4031" />
事实上,当我尝试连接安装在不同位置的客户端时,我被拒绝了。但是当我从同一个位置使用 Chrome 的 Advanced REST Client 时,我并没有被拒绝! 在扩展中,响应的 header 表示
Access-Control-Allow-Origin: http://www.domain.tld:4031
那么为什么我仍然得到“200 OK”的答案,以及我请求的数据?
更新: 我认为这个主题不足以回答:How does Google Chrome's Advanced REST client make cross domain POST requests?
我主要关心的是:为什么可以 "ask" 获得这些额外权限。我认为不应该允许客户只决定它收到的许可。我认为这仅取决于服务器。如果我只是 "ask" 获得访问您计算机上的数据的额外权限怎么办?这对我来说没有意义...
REST 客户端(或者实际上是浏览器)能够绕过 CORS 限制的原因是它是客户端保护。服务器没有责任提供这种保护,但它是大多数现代浏览器供应商实现的一项功能,以保护他们的用户免受 XSS-hazards 的侵害。
维基百科 CORS 页面的以下引述总结得很好
"Although some validation and authorization can be performed by the server, it is generally the browser's responsibility to support these headers and respect the restrictions they impose." - Wikipedia
您当然可以像引文所强调的那样,自己进行一些服务器端验证。然而, "Access-Control-Allow-Origin" header 更多的是向浏览器表明浏览器允许指定的来源是可以的。然后由浏览器决定是否要遵守此 header。例如,在以前的版本中 chrome 实际上存在一个标志来关闭同源策略。