CORS错误 - Ajax请求返回纽约时报API间歇性故障 [英] CORS Error - Ajax request returns intermittent failures with NYTimes API
问题描述
我想提出几个Ajax请求的纽约时报国会API ,同时迭代区的阵列(1至5)。我只能够在平均成功返回2请求,剩下的返回:
XMLHtt prequest无法加载https://api.nytimes.com/svc/politics/v3/us/legislative/congress/members/house/OR/2/current.json?api-key=xxxxxxx.
无访问控制允许来源标头的请求的资源present。原产地的http://本地主机:9001'。因此不允许访问
似乎没有图案到这些缺陷。即使使用相同的 _district
若干多次失败看似随机。
我的code:
VAR title_element,
title_render,
district_numbers = ['1','2','3','4','5'],
element_ids = ['ushd1','ushd2','ushd3','ushd4','ushd5'],
apiKey ='API密钥= XXXXXXXXXXX',
的baseUrl ='https://api.nytimes.com/svc/politics/v3/us/legislative/congress/members/house/OR/',
orUsHouseMembers,
FRAG; 对于(VAR I = 0,total_districts = district_numbers.length; I< total_districts;我++){
(函数(ⅰ){
VAR myUrl = +的baseUrl district_numbers [I] +'/current.json? + apiKey; $阿贾克斯({
网址:myUrl,
数据类型:JSON, 成功:功能(数据){
的console.log('\\ nSUCCESS:'+ myUrl);
title_element =的document.getElementById(element_ids [I]);
title_render = document.createTextNode(data.results [0]。名称+' - 区'+ data.results [0]。区);
title_element.appendChild(title_render);
}, 错误:功能(数据){
的console.log('\\ nFAIL:'+ myUrl);
}
})
})(一世);
}
我尝试添加访问控制允许来源:'*'
和所有常见的CORS的东西,但我不希望这是一个真正的CORS问题,因为失败是太间歇
时的东西在我的code不妥或可能的API?
时的东西在我的code不妥或可能的API?
块引用>是的,而非
JSON
的AJAX的的dataType
选项更改为JSONP
:数据类型:'JSONP
为了避免 CORS 问题时,您的只的希望
GET
数据,使用 JSONP 一>P.S:
请注意,我在一个小演示,我使用的jsfiddle做测试了由我和它的工作正确,公正的的采取帐户的,它的现在返回
403(禁止)
- 我想是因为我要输入一个有效的API密钥
,你提供了一个假的(API密钥= XXXXXXXXXXX
)。I am making several ajax requests to the NYTimes Congress API, whilst iterating over an array of districts (1 to 5). I am only able to successfully return 2 requests on average, the rest returning a:
XMLHttpRequest cannot load https://api.nytimes.com/svc/politics/v3/us/legislative/congress/members/house/OR/2/current.json?api-key=xxxxxxx. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9001' is therefore not allowed access.
It appears that there is no pattern to these failings. Even using the same
_district
number multiple times fails seemingly randomly.My code:
var title_element, title_render, district_numbers = ['1', '2', '3', '4', '5'], element_ids = ['ushd1', 'ushd2', 'ushd3', 'ushd4', 'ushd5'], apiKey = 'api-key=xxxxxxxxxxx', baseUrl = 'https://api.nytimes.com/svc/politics/v3/us/legislative/congress/members/house/OR/', orUsHouseMembers, frag; for (var i = 0, total_districts = district_numbers.length; i < total_districts; i++) { (function (i) { var myUrl = baseUrl + district_numbers[i] + '/current.json?' + apiKey; $.ajax({ url: myUrl, dataType: 'json', success: function (data) { console.log('\nSUCCESS: ' + myUrl); title_element = document.getElementById(element_ids[i]); title_render = document.createTextNode(data.results[0].name + ' - District ' + data.results[0].district ); title_element.appendChild(title_render); }, error: function (data) { console.log('\nFAIL: ' + myUrl); } }) })(i); }
I tried adding
Access-Control-Allow-Origin: '*'
and all the usual CORS stuff, but I dont expect this to be a true CORS issue as the failures are too intermittentIs something in my code amiss or maybe the API?
解决方案Is something in my code amiss or maybe the API?
Yes, instead of
json
, change the AJAX'sdataType
option tojsonp
:dataType: 'jsonp'
In order to avoid of CORS issues when you only want to
GET
data, use JSONP.
P.S:
Note that I tested it by myself in a small demo that I made using jsFiddle and it's working correctly, just take on account that it's now returns
403 (Forbidden)
- I assume because I should enter a validapi-key
, you provided a fake one (api-key=xxxxxxxxxxx
).这篇关于CORS错误 - Ajax请求返回纽约时报API间歇性故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!