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

时间:2011-01-12 13:50:38

标签: ajax xmlhttprequest

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

但是不同的端口呢?

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

http://localhost:80/mypage.html

我在localhost上运行了另一个webserver,它意味着处理ajax请求但是侦听不同的端口。所以mypage.html中的javascript看起来像这样:

var xmlhttprequest = new XMLHttpRequest(); 
xmlhttp.open("GET", "http://localhost:1234/?parameters", true); 
xmlhttp.send();
这会有用吗?还是会给出一个安全例外?

2 个答案:

答案 0 :(得分:8)

使用其他端口确实算作跨站点脚本。

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

答案 1 :(得分:5)

这不会,因为它实际上仍然在另一台服务器上(至少是另一台服务器实例,可能不在您的控制范围内)。

您可以在标题中添加Access-Control-Allow-Origin:http://yourdomain:1234/,使用Google进行跨源资源共享。它虽然相对较新,但并非所有浏览器都知道这一点。 或者你可以使用jQuery(在http://softwareas.com/cross-domain-communication-with-iframes上阅读更多内容。)