我可以在与该端口加载的脚本文件不同的端口上使用XMLHttpRequest吗?

EMP*_*EMP 10 ajax xmlhttprequest cross-domain

我的网站使用XMLHttpRequest(实际上是jQuery).我还有另一个站点在同一台服务器上运行,它提供一个脚本文件,使XHR请求返回到该站点,即.

http:// mysite:50000/index.html包含

<script src="http://mysite:9000/otherscript.js"></script>
Run Code Online (Sandbox Code Playgroud)

http:// mysite:9000/otherscript.js包括

$.ajax({
    url: 'http://mysite:9000/ajax/stuff'
});
Run Code Online (Sandbox Code Playgroud)

问题是 - 这不起作用.来自加载脚本的AJAX请求失败,没有错误消息.从我能够发现的这是旧的同源政策.鉴于我控制了两个站点,我能做些什么才能使这项工作成功?"document.domain"技巧似乎没有为XMLHttpRequest做任何事情.

nik*_*oss 10

您可以通过添加Access-Control-Allow-Origin标题来完成此操作.

如果您使用的是PHP

header("Access-Control-Allow-Origin: http://example.com");
Run Code Online (Sandbox Code Playgroud)

或者在Node.js中

response.writeHead(200, {'Access-Control-Allow-Origin':' http://example.com'});
Run Code Online (Sandbox Code Playgroud)

这应该为你做的伎俩.它总是适合我.


nit*_*one 9

不,不能用XHR做到这一点.同域策略在那里是非常严格的 - 相同的主机,相同的端口,相同的协议.抱歉! 您将不得不求助于其他技巧(iframe,标题操作等)才能使其发挥作用.

  • 请参阅http://dannythorpe.com/2008/07/28/cross-domain-transport-with-windowname/和http://orensol.com/2009/06/07/cross-domain-ajax-calls-and- iframe-communication-how-to /例如.有jQuery和dojo插件可以很好地包装这些东西. (2认同)