【问题标题】:How does the cross-origin policy work? [duplicate]跨域策略如何运作? [复制]
【发布时间】:2016-04-11 16:32:17
【问题描述】:

这让我很困惑。假设我在浏览器中打开了 2 个选项卡,一个在 http://aaa.com,另一个在 http://bbb.com

假设我提出了一个请求

$ajax({
    method : 'POST',
    url : 'http://aaa.com/SomeAction',
    ... 
});

来自我浏览器的 JavaScript 控制台。我理解跨域策略的方式是,如果我输入的 JS 控制台是http://aaa.com 选项卡中的那个,服务器只允许该请求发生。但是服务器怎么知道呢?我的浏览器是否向它发送了一个标头,告诉它请求来自哪里?

【问题讨论】:

  • 你可以打开Network标签,选择$.ajax()请求的url,点击Headers标签,滚动到Request Headers查看请求的请求和响应头。
  • 服务器不需要知道任何事情——客户端是执行这个策略的那个。 (除非我们在这里讨论 CORS,否则服务器当然也必须发挥作用。)
  • @CBroe — 即使使用 CORS,服务器也不会强制执行该策略;它可以放松它。
  • @Quentin 我没有说服务器强制执行它,只是说它在其中发挥了作用。

标签: javascript jquery ajax cross-domain xss


【解决方案1】:

是服务器只允许该请求发生,如果 JS 我输入的控制台是http://aaa.com标签中的那个

不正确。

没有什么可以阻止 example.com 向 example.org 发送 AJAX 请求。但是,同源策略将阻止 example.com 读取返回的响应。

Same Origin Policy 在客户端浏览器中强制执行,而不是在服务器上。

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多