【问题标题】:XMLHttpRequest cross site scripting on same server but different portXMLHttpRequest 跨站点脚本在同一服务器上但不同的端口
【发布时间】:2018-02-03 14:58:51
【问题描述】:

使用 XMLHttpRequest 无法打开与页面本身所在域不同域中的文档的连接。

但是不同的端口呢?

例如,我的机器上运行着一个网络服务器,侦听端口 80,所以网址看起来像这样:

http://localhost:80/mypage.html

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

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

这行得通吗?还是它也会给出安全例外?

【问题讨论】:

    标签: ajax xmlhttprequest


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-19
        • 1970-01-01
        • 2012-07-09
        • 2021-11-05
        相关资源
        最近更新 更多