如何使用javascript解决cors? [复制]
Posted
技术标签:
【中文标题】如何使用javascript解决cors? [复制]【英文标题】:how to solve cors using javascript? [duplicate] 【发布时间】:2020-07-17 12:22:43 【问题描述】:我正在尝试建立一个新闻聚合网站,我是一个初学者。向https://timesofindia.indiatimes.com/rssfeeds/-2128816011.cms xml rss feed as 发出请求时出现错误
错误 1:“从源 'null' 访问 XMLHttpRequest 在 'https://timesofindia.indiatimes.com/rssfeeds/-2128816011.cms' 已被 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' 标头。”
错误 2:“GET https://timesofindia.indiatimes.com/rssfeeds/-2128816011.cms net::ERR_FAILED”
我使用下面的代码来解决,但没有成功。
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();
【问题讨论】:
【参考方案1】:您无法避免这种情况,因为您请求的 URL,它的服务器不接受来自其他来源的 xhr 请求,然后是他们的网站(没有来自那里的服务器的 Access-Control-Allow-Origin: *
标头)
所以要解决这个问题,你有:
除非https://timesofindia.indiatimes.com
网站应该将标头Access-Control-Allow-Origin: *
添加到他们的应用服务器,我猜这是不可能的。
或者您必须创建小型后端应用程序(node、java、python php ...),例如
mybackend.example.com/indiafeedcall
只调用 url 并返回其结果 (xml),并且不要忘记在响应中添加标头 @ 987654325@ ,因此您的客户端 js 将使用 mybackend.example.com/indiafeedcall
而不是原始 url 。
【讨论】:
好的,我没有得到你的第二点 @FaraazHamza,我的意思是,你像代理一样创建一个应用程序,它自己会与 url 建立 http 连接,然后将 xml 作为结果发回,(当然你在这个应用程序中设置了 header cors ) 然后在你的 javascript 代码中使用 app url 服务 非常感谢。知道了,但是我有一个第三方网站可以完成这项工作(你提到的第二点)。 @FaraazHamza 不客气 :) 祝你好运!以上是关于如何使用javascript解决cors? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
javascript 如何解决Express中的CORS问题?
如何使用 Angular 消除 Spring Boot 中的 CORS 错误? [复制]