Javascript 同源策略冲突,但数据无法发送
我正在用javascript编写一个小跟踪器。此跟踪器只获取当前访问的网站以及所有需要的信息。它还跟踪ajax事件。对应的是一个java程序,它与Web服务器托管在同一台机器上,但侦听不同的端口。我的javascript程序应该无法发送数据,因为相同的源策略(不同的端口)。chrome中的控制台告诉我:Javascript 同源策略冲突,但数据无法发送,javascript,same-origin-policy,Javascript,Same Origin Policy,我正在用javascript编写一个小跟踪器。此跟踪器只获取当前访问的网站以及所有需要的信息。它还跟踪ajax事件。对应的是一个java程序,它与Web服务器托管在同一台机器上,但侦听不同的端口。我的javascript程序应该无法发送数据,因为相同的源策略(不同的端口)。chrome中的控制台告诉我: XMLHttpRequest cannot load http://127.0.0.1:8082/posts. No 'Access-Control-Allow-Origin' header i
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从其他来源读取数据 它具有一些功能,可防止在某些情况下向其他来源发送数据。这些可以总结为“当请求不能使用HTML表单构造时”。这些触发请求发送实际请求的权限
跨源请求伪造是一个不同的问题,最好通过使用a(存储在站点上的HTML文档中(因此只能通过从该站点发起的请求发送)和用户会话(用于比较提交的请求)来解决.同源策略只会停止响应。没有请求就没有响应,因此必须传递响应。如果要阻止来自其他域的请求,则必须自己在服务器应用程序中处理。我真的不知道,谢谢!