如何使用javascript解决cors?

如何使用javascript解决cors?,javascript,html,xml,cors,rss,Javascript,Html,Xml,Cors,Rss,我正在尝试建立一个新闻聚合网站,我是一个初学者。我在向xml rss提要发出请求时出错 错误1:“CORS策略已阻止从源“null”访问“”处的XMLHttpRequest:请求的资源上不存在“Access Control Allow origin”标头。” 错误2:“获取网络::错误\u失败” 我用下面的代码来解决这个问题,但没有成功 makeCorsRequest(); function createCORSRequest(method, url) { var xhr = new

我正在尝试建立一个新闻聚合网站,我是一个初学者。我在向xml rss提要发出请求时出错

错误1:“CORS策略已阻止从源“null”访问“”处的XMLHttpRequest:请求的资源上不存在“Access Control Allow origin”标头。”

错误2:“获取网络::错误\u失败”

我用下面的代码来解决这个问题,但没有成功

makeCorsRequest();

function createCORSRequest(method, url) {
    var xhr = new XMLHttpRequest();
    if ("withCredentials" in xhr) {
        // XHR for Chrome/Firefox/Opera/Safari.
        xhr.open(method, url, true);
    } else if (typeof XDomainRequest != "undefined") {
        // XDomainRequest for IE.
        xhr = new XDomainRequest();
        xhr.open(method, url);
    } else {
        // CORS not supported.
        xhr = null;
    }
    return xhr;
}

// Helper method to parse the title tag from the response.
function getTitle(text) {
    return text.match('<title>(.*)?</title>')[1];
}

// Make the actual CORS request.
function makeCorsRequest() {
    // This is a sample server that supports CORS.
    var url = 'https://timesofindia.indiatimes.com/rssfeeds/-2128816011.cms';

    var xhr = createCORSRequest('GET', url);
    if (!xhr) {
        alert('CORS not supported');
        return;
    }

    // Response handlers.
    xhr.onload = function() {
        var text = xhr.responseText;
        var title = getTitle(text);
        alert('Response from CORS request to ' + url + ': ' + title);
    };

    xhr.onerror = function() {
        alert('Woops, there was an error making the request.');
    };

    xhr.send();
}
makeCorsRequest();
函数createCORSRequest(方法,url){
var xhr=new XMLHttpRequest();
如果(xhr中的“带凭证”){
//XHR适用于Chrome/Firefox/Opera/Safari。
open(方法、url、true);
}else if(XDomainRequest的类型!=“未定义”){
//XDomainRequest for IE。
xhr=新的XDomainRequest();
open(方法,url);
}否则{
//不支持CORS。
xhr=null;
}
返回xhr;
}
//帮助器方法来解析响应中的标题标记。
函数getTitle(文本){
返回text.match(“(.*)”)[1];
}
//提出实际的CORS请求。
函数makeCorsRequest(){
//这是一个支持CORS的示例服务器。
var url='1〕https://timesofindia.indiatimes.com/rssfeeds/-2128816011.cms';
var xhr=createCORSRequest('GET',url);
如果(!xhr){
警报(“不支持CORS”);
回来
}
//响应处理程序。
xhr.onload=函数(){
var text=xhr.responseText;
var title=getTitle(文本);
警报('CORS请求对'+url+':'+title'的响应);
};
xhr.onerror=函数(){
警报('Woops,发出请求时出错');
};
xhr.send();
}

您无法避免,因为您请求的URL,其服务器不接受来自其他来源的xhr请求,而不是他们的网站(无
访问控制允许来源:
来自该服务器的标题)

因此,要解决这些问题,您必须:

  • 除非
    https://timesofindia.indiatimes.com
    网站应该将标题
    访问控制允许来源:
    添加到他们的应用服务器,我想这是不可能的。

  • 或者您必须创建小型后端应用程序(node、java、python-php…),例如
    mybackend.example.com/indiafeedcall
    来调用url,并返回其结果(xml),并且不要忘记在响应
    访问控制允许源代码中添加标题:
    ,因此,客户端js将使用
    mybackend.example.com/indiafeedcall
    而不是原始url

好吧,我没拿到你的第二张point@FaraazHamza,我的意思是,你像一个代理一样创建一个应用程序,它自己将与url进行http连接,然后返回xml作为结果,(当然你在这个应用程序中设置了头cors),然后在你的javascript代码中使用应用程序url服务非常感谢。明白了,然而,我有一个第三方网站来做这项工作(你的第二点是你遇到的)。@FaraazHamza,不客气:),祝你好运!