Ajax - “Access-Control-Allow-Origin”错误

时间:2012-08-25 18:22:49

标签: javascript ajax api streaming

我正在尝试使用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();

1 个答案:

答案 0 :(得分:2)

您正遇到Same Origin Policy施加的限制。简而言之,禁止对不同域的AJAX调用,并且将失败 - 除非远程主机明确允许。

您需要使用JSONP(主要适用于API返回的数据)或proxy the request through your own server/domain

CORS也是一个选项,但假设您可以访问远程服务器的配置。