我正在尝试使用Livestream API查看某个频道是否有效,但一直收到此错误:
XMLHttpRequest cannot load http://channel.api.livestream.com/1.0/livestatus?channel=huskystarcraft. Origin http://www.webdevstl.com is not allowed by Access-Control-Allow-Origin.
我是否需要通过PHP运行它或者我在ajax调用中做错了什么?这是非常简单的代码:
function getActive(){
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var json = JSON.parse(xmlhttp.responseText);
console.log(json);
}
}
xmlhttp.open("GET", "http://channel.api.livestream.com/1.0/livestatus?channel=huskystarcraft", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}
getActive();
答案 0 :(得分:2)
您正遇到Same Origin Policy施加的限制。简而言之,禁止对不同域的AJAX调用,并且将失败 - 除非远程主机明确允许。
您需要使用JSONP(主要适用于API返回的数据)或proxy the request through your own server/domain。
CORS也是一个选项,但假设您可以访问远程服务器的配置。