最初我写了一些这样的代码:
var val="MSFT";
$.get('https://www.google.com/finance/company_news?q='+val+'&output=rss',
function (data) {
console.log(data);
});
该代码在本地运行良好。但是当我尝试从 GitHub 调用相同的函数时,它给了我一个关于 CORS 的错误。
因此,我尝试使用以下客户端代码:
var nws_lbl = "MSFT";
var news_url = 'https://www.google.com/finance/company_news?q='+nws_lbl+'&output=rss&callback=? ';
$.ajax({
url: news_url,
data: {
format: 'json'
},
error: function () {
console.log("Error while getting data");
},
dataType: 'jsonp',
success: function (data) {
console.log(data);
}
});
但是我收到以下错误:
在网络中我得到 200 这意味着响应是正确的。
总是会出错。不知道我错过了什么。有人可以帮忙吗?
最佳答案
您可以通过 CORS proxy 提出请求来绕过 CORS 限制。 ,像这样:
var val="MSFT",
proxyUrl = 'https://cors-anywhere.herokuapp.com/',
targetUrl = 'https://www.google.com/finance/company_news?q='+val+'&output=rss';
$.get(proxyUrl + targetUrl,
function (data) {
console.log(data);
});
代理向 targetUrl
发出请求,获取响应,添加 Access-Control-Allow-Origin
响应 header 和所需的任何其他 CORS header ,然后传递该 header 返回到您的请求代码。添加了 Access-Control-Allow-Origin
header 的响应就是浏览器看到的内容,因此浏览器允许您的前端代码实际访问该响应。
就问题中的第二个代码片段而言,我认为它对您不起作用的原因是 https://www.google.com/finance/company_news
不有什么办法返回JSONP。因此, format
和 callback
参数似乎不会导致您想要的结果,而是导致一些非 JSONP 响应,您的代码无法解析这些响应,因为它不在预期的格式。
关于javascript - Google News API 给出错误 Uncaught SyntaxError : Unexpected token ')' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314070/