HttpRequest的呼叫源空没有被允许访问控制允许来源
问题描述:
我想从这个IMDB API的一些数据:http://www.deanclatworthy.com/imdb/#usageHttpRequest的呼叫源空没有被允许访问控制允许来源
但是我使用这个代码得到错误:
<hmtl>
<head>
<script type="text/javascript">
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = false;
}
}
}
xmlhttp.open("GET", "http://www.deanclatworthy.com/imdb/?q=The+Green+Mile", false);
xmlhttp.send();
var imdbData = xmlhttp.responseText;
//var imdbJSON = eval("(" + imdbData + ")");
alert(imdbData);
</script>
</head>
<body>
<body>
</body>
</html>
错误是这样的:来源http://mysite.nl是Access-Control-Allow-Origin不允许的。 test.html:23Uncaught错误:NETWORK_ERR:XMLHttpRequest异常101
有人可以发布此请求的工作代码吗?谢谢。
答
您无法像访问其他服务器的数据那样访问其他服务器的数据。它违反了同一起源政策。对于跨域请求,你可以使用jQuery和JSONP,请参阅:
- http://usejquery.com/posts/the-jquery-cross-domain-ajax-guide
- http://remysharp.com/2007/10/08/what-is-jsonp/
如果你不使用jQuery你可以google “跨域AJAX” 什么的。也许这些链接给你一些想法
- http://snook.ca/archives/javascript/cross_domain_aj
- http://alvinabad.wordpress.com/2009/02/13/feb13/
,作为工作代码的请求。那么,现在你知道相同的产地政策,也许你会得到它自己的工作...