XMLHttpRequest跨站点脚本在同一服务器上但不同的端口

cla*_*amp 5 ajax xmlhttprequest

使用XMLHttpRequest无法打开与托管页面本身不同的域上的文档的连接.

但是不同的港口呢?

例如,我在我的机器上运行的网络服务器在端口80上侦听,因此webaddress看起来像这样:

http://localhost:80/mypage.html
Run Code Online (Sandbox Code Playgroud)

我有另一个在localhost上运行的web服务器,它用于处理ajax请求但是侦听不同的端口.所以mypage.html中的javascript看起来像这样:

var xmlhttprequest = new XMLHttpRequest(); 
xmlhttp.open("GET", "http://localhost:1234/?parameters", true); 
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)

这会有用吗?还是会给出安全例外?

jus*_*tkt 8

使用不同的端口确实算作跨站点脚本.

有几种众所周知的方法可以进行调用(您可以随时发送数据)并使用响应(这是您在反xss约束下通常无法做到的),包括JSONP和在页面中使用iframe来加载数据.


Zla*_*tko 5

这不会,因为它实际上仍然在另一台服务器上(至少另一台服务器实例,可能不在您的控制之下).

您可以添加Access-Control-Allow-Origin:http:// yourdomain:1234 / in headers,google for Cross-Origin Resource Sharing.它虽然相对较新,但并非所有浏览器都知道这一点.或者你可以使用jQuery(在http://softwareas.com/cross-domain-communication-with-iframes上阅读更多内容).