我是 XHR 的新手,正在尝试解决一个简单的用例。我有一个网络服务器,我的 javascript 将从那里获取数据。但是,服务器不会自己提供数据,而是将 javascript XHR 请求重定向到备用位置(例如 Amazon S3 上的文件)以完成请求。
这使我进入了跨域 XHR 的世界,尽管阅读了一些关于它的信息,但我什至无法获得一个简单的示例。我将“Access-Control-Allow-Origin:*”添加到我的主域的标题中,该域为包含 javascript 的网页提供服务。但它不起作用。我错过了什么?无论浏览器如何,我都需要它来工作,所以我正在寻找初始服务器可以做的事情,而不是充当代理,这违背了将请求卸载到 S3 的目的。
- Chrome:在第二次调用时给出“异常:NetworkError:DOM 异常 19”。
- IE:显示警告,但确认后打开第二个 url。
- Firefox:在第二次通话时只说“例外:失败”。
test.php 的代码如下:
<?php
header('Content-type: text/html');
header('Access-Control-Allow-Origin: *');
?>
<!DOCTYPE html>
<html>
<header>
<script type="text/javascript">
var request;
var url1 = "data/file.csv";
var url2 = "http://stackoverflow.com/users/1293955/ng-algo";
try
{
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari
request = new XMLHttpRequest();
}
else {
// code for IE6, IE5
request = new ActiveXObject('Microsoft.XMLHTTP');
}
// load data. 'false' indicates that further script
// is not executed until data is loaded and parsed
alert("Test1 with url: "+url1);
request.open('GET', url1, false);
request.send();
alert(request.responseText);
alert("Test2 with url: "+url2);
request.open('GET', url2, false);
request.send();
alert(request.responseText);
} catch (e) { alert("Exception: "+e.message); }
</script>
</header>
This is a test page
</html>