【发布时间】: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