2015-10-20 48 views
3

我开发了一个客户端和一个服务器应用程序。在服务器的Web.config,我设置属性Chrome的高级REST客户端不介意CORS限制,如何?

<add name="Access-Control-Allow-Origin" value="http://domain.tld:4031" /> 

而且,事实上,当我尝试安装在不同位置的客户端连接,我被拒绝。但是,当我在同一地点使用Chrome的高级REST客户端时,我不会被拒绝! 在扩展,响应的头指示

Access-Control-Allow-Origin: http://www.domain.tld:4031 

那么,如何来了,我还得到一个答案“200 OK”,数据我要求?

UPDATE: 我不认为这个话题是不够的答案:How does Google Chrome's Advanced REST client make cross domain POST requests?

我最关心的是:如何来是有可能要“问”为这些额外的权限。我相信客户不应该被允许只是决定它收到的权限。我认为这取决于服务器。如果我只是“请求”额外的权限来访问您的计算机上的数据会怎么样?这对我来说没有意义...

+0

的可能的复制[谷歌如何Chrome的高级REST客户端,让跨域POST请求?(http://stackoverflow.com/questions/11127025/how-does-google-chromes-advanced-rest-client-make-跨域请求) –

+0

不是。这并不能解释如何“请求”这些额外的权限。我认为这取决于服务器。如果我只是“请求”额外的权限来访问您的计算机上的数据会怎么样?对我来说没有意义... –

回答

0

REST客户端(或者真的是浏览器)能够绕过CORS限制的原因是它是客户端保护。提供这种保护不是服务器的责任,但它是大多数现代浏览器供应商为保护用户免受XSS危害而实施的功能。

从维基百科CORS页面下面引用概括起来相当不错

“虽然一些验证和授权可以由服务器来执行,一般是浏览器的责任来支持这些标题和尊重的限制他们强加。“ - Wikipedia

当然,你可以像引用的规定一样,自己做一些服务器端验证。然而,“Access-Control-Allow-Origin”标题对于浏览器来说更适合浏览器允许指定的来源。然后由浏览器决定是否要兑现这个标题。在以前的版本中,例如chrome,实际上存在一个标志来关闭相同的源策略。

相关问题