【发布时间】:2016-08-01 17:48:52
【问题描述】:
我正在用 javascript 编写一个小跟踪器。该跟踪器仅获取当前访问的网站以及所有需要的信息。它还跟踪 ajax 事件。对应的是一个 java 程序,它与 web 服务器托管在同一台机器上,但侦听不同的端口。由于相同的来源策略(不同的端口),我的 javascript 程序应该无法发送数据。 chrome 中的控制台告诉我:
XMLHttpRequest cannot load http://127.0.0.1:8082/posts. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8081' is therefore not allowed access.
我不明白的是,数据被发送到服务器!我在不同的机器上仔细检查了这个(使用不同的 ip)。我只是想明白为什么。 send 方法不是我自己写的,所以没搞懂。
//sending data to server-tracker
function sendData(data)
{
console.log("Sending data: ");
console.log(data);
var xhr = window.XMLHttpRequest
? new window.XMLHttpRequest()
: window.ActiveXObject
? new ActiveXObject('Microsoft.XMLHTTP')
: null;
xhr.open('POST', "http://127.0.0.1:8082/posts", true);
xhr.send(data);
}
感谢您的帮助。
【问题讨论】:
-
同源策略只会停止响应。没有请求就没有响应,因此必须交付它。如果要阻止来自其他域的请求,则必须自己在服务器应用程序中处理。
-
我真的不知道,谢谢!
标签: javascript same-origin-policy