Error de CORS: la solicitud de Ajax devuelve fallas intermitentes con la API NYTimes

Estoy realizando varias solicitudes de ajax al API de NYTimes Congress , mientras recorro varios distritos (1 a 5). Solo puedo devolver con éxito 2 solicitudes en promedio, el rest devolviendo 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.

Parece que no hay un patrón de estas fallas. Incluso el uso del mismo número _district varias veces falla al parecer aleatoriamente.

Mi código:

 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); } 

Intenté agregar Access-Control-Allow-Origin: '*' y todas las funciones habituales de CORS, pero no creo que esto sea un verdadero problema de CORS, ya que los fallos son demasiado intermitentes.

¿Hay algo en mi código que está mal o tal vez la API?

¿Hay algo en mi código que está mal o tal vez la API?

Sí, en lugar de json , cambie la opción dataType de AJAX a jsonp :

 dataType: 'jsonp' 

Para evitar problemas de CORS cuando solo desea obtener datos, use JSONP .


PD:

Tenga en cuenta que lo probé por mi cuenta en una pequeña demostración que hice con jsFiddle y está funcionando correctamente, solo tenga en cuenta que ahora devuelve 403 (Forbidden) . Supongo que porque debo ingresar una api-key válida, usted proporcionó un falso uno ( api-key=xxxxxxxxxxx ).