0

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

1 回答 1

2

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

您需要使用 JSONP(主要适用于 API 返回的数据)或通过您自己的 server/domain 代理请求

CORS 也是一种选择,但前提是您可以访问远程服务器的配置。

于 2012-08-25T18:46:20.417 回答