Ajax—“;访问控制允许起源”;错误

Ajax - "Access-Control-Allow-Origin" Error

本文关键字:起源 错误 许起源 访问控制 Ajax      更新时间:2023-09-26

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

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

您需要使用JSONP(主要适用于API返回的数据)或通过自己的服务器/域代理请求。

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