这让我很困惑。假设我在浏览器中打开了两个选项卡,一个在http://aaa.com
上,另一个在http://bbb.com
上。
假设我提出请求
$ajax({
method : 'POST',
url : 'http://aaa.com/SomeAction',
...
});
从我浏览器的JavaScript控制台。我理解跨源策略的方式是,只有当我输入的JS控制台是http://aaa.com
选项卡中的控制台时,服务器才允许该请求发生。但是服务器怎么知道呢?我的浏览器是否向它发送一个头,告诉请求来自哪里?
服务器只允许在JS我输入的控制台是
http://aaa.com
选项卡中的控制台
不是这样。
没有什么可以阻止example.com向example.org发送AJAX请求。但是,同源策略将阻止example.com读取返回的响应。
同源策略是在客户端浏览器中强制执行的,而不是在服务器上。