如何使用javascript解决cors?
我正在尝试建立一个新闻聚合网站,我是一个初学者。我在向xml rss提要发出请求时出错 错误1:“CORS策略已阻止从源“null”访问“”处的XMLHttpRequest:请求的资源上不存在“Access Control Allow origin”标头。” 错误2:“获取网络::错误\u失败” 我用下面的代码来解决这个问题,但没有成功如何使用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
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…),例如
来调用url,并返回其结果(xml),并且不要忘记在响应mybackend.example.com/indiafeedcall
,因此,客户端js将使用访问控制允许源代码中添加标题:
而不是原始urlmybackend.example.com/indiafeedcall