使用角度 $http 调用 Quandl API 的 CORS 问题
Posted
技术标签:
【中文标题】使用角度 $http 调用 Quandl API 的 CORS 问题【英文标题】:CORS issue with calling Quandl API with angular $http 【发布时间】:2016-09-17 07:15:41 【问题描述】:我正在尝试从 Quandl (https://www.quandl.com/data/YAHOO/MSFT.json) 网站获取数据。它与所有浏览器和其他 REST 客户端(如 Postman)完美配合。
我的角度 $http 调用看起来很简单,我已经尝试了很多有或没有标题的组合。
$http(
url: 'https://www.quandl.com/data/YAHOO/MSFT.json',
method: "GET",
headers:
"X-Content-Type-Options": "nosniff",
"X-Frame-Options": "SAMEORIGIN",
"X-Rack-CORS": "preflight-hit; no-origin"
)
.then(res =>
console.log(res);
);
得到一个标准错误
XMLHttpRequest 无法加载 https://www.quandl.com/data/YAHOO/MSFT.json。对预检的响应 请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:2992” 使用权。响应的 HTTP 状态代码为 405。
但是,供应商似乎支持 CORS http://help.quandl.com/article/280-does-the-quandl-api-support-cross-origin-resource-sharing-cors
有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:Quandl 在通过 API 请求数据时支持 CORS。您尝试使用的 URL 用于数据集的网页。要进行 API 调用,您所要做的就是找到该数据集的 Quandl 代码并将其传递给 API。
您可以在该页面的右上角找到 Quandl 代码(本例中为 YAHOO/MSFT)。因此,您的请求的适当 API 调用将是 https://www.quandl.com/api/v3/datasets/YAHOO/MSFT.json。
您可以在此处查看使用 Quandl API 的完整文档:https://www.quandl.com/docs/api。
【讨论】:
【参考方案2】:您是否检查过您使用的网址是否正确? Quandl 为其 API 提出了不同的 URL。见Quandl - How do I download a dataset using the API
您的网址应为:https://www.quandl.com/api/v3/datasets/YAHOO/MSFT-MSFT-Microsoft-Corporation.json
【讨论】:
以上是关于使用角度 $http 调用 Quandl API 的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 RXJS 继续以角度触发 http 调用,直到满足条件
webpack服务器中的rest API调用(来自角度)返回401
如何使用标头、有效负载和正文制作 httpclient 获取请求?角度 API