我的网站使用XMLHttpRequest(实际上是jQuery)。我还在同一台服务器上运行另一个站点,该站点提供一个脚本文件,使XHR请求返回到该站点,即。
http://mysite:50000/index.html 包括
<script src="http://mysite:9000/otherscript.js"></script>
和 http://mysite:9000/otherscript.js 包括
$.ajax({
url: 'http://mysite:9000/ajax/stuff'
});
问题是 - 这不起作用。来自加载脚本的AJAX请求失败,没有错误消息。从我能够发现的这是旧的同源政策。鉴于我控制了两个站点,我能做些什么才能使这项工作成功? “document.domain”技巧似乎没有为XMLHttpRequest做任何事情。
答案 0 :(得分:10)
不能 - 不能用XHR做到这一点。同域策略在那里是非常严格的 - 相同的主机,相同的端口,相同的协议。抱歉!您将不得不诉诸其他技巧(iframe,标题操作等)来使其发挥作用。
答案 1 :(得分:10)
您可以通过添加Access-Control-Allow-Origin
标题来完成此操作。
如果您使用的是PHP
header("Access-Control-Allow-Origin: http://example.com");
或在Node.js中
response.writeHead(200, {'Access-Control-Allow-Origin':' http://example.com'});
这应该可以帮到你。它总是适合我。
答案 2 :(得分:0)
我刚刚用PHP服务解决了一个类似的问题我现在正在玩(不确定PHP解决方案与此直接相关,但......)通过创建单行代理PHP页面,SimpleProxy .PHP:
<?php
echo file_get_contents('http://localhost:4567');
?>
在我的XMLHttpRequest中,我使用了&#39; SimpleProxy.php&#39;代替&{39; http://localhost:4567&#39;,它有效地将请求放在与我的.js代码相同的域中。