当浏览器和CURL工作时,ajax GET请求因URL而超时

我看到一个类似的问题,但它没有一个公认的回答。

以下ajax请求超时。 但是使用浏览器或curl工作的GET请求在同一个URL上工作正常。 请注意,这是一个cross domain AJAX因为代码位于不同的服务器上,URL适用于AWS EC2(elastbeanstalk)实例。

任何线索为什么?

 $.ajax({ url: "http://.elasticbeanstalk.com/api/v1/Location", dataType:'jsonp', crossDomain:true, timeout:120000 }).done(function(){ //do something $("#status").html("SUCESS"); }).fail(function(jqXHR, textStatus){ if(textStatus == 'timeout') { //alert('Failed from timeout'); $("#status").html(textStatus); //do something. Try again perhaps? } }); 

[编辑]补充说

当我检查AWS服务器日志时,我看到GET请求以200(成功)响应。 但仍然是$ .ajax请求超时

120.138.116.202 – – [17 / Jun / 2015:12:12:31 +0000]“GET / api / v1 / Location HTTP / 1.1”200 144“ http://yyyy.xxxx.com/ ”“Mozilla / 5.0 (Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 43.0.2357.124 Safari / 537.36“

无法处理跨域JSONP请求的错误。

您必须使用Github https://github.com/jaubourg/jquery-jsonp上提供的jsonp plug-in它为您提供error handling支持并尝试找出究竟出了什么问题

您可以查看简单易用的文档

浏览jQuery文档 。 你会注意到的

错误

如果请求失败则调用的函数(…)注意:不会为跨域脚本和跨域JSONP请求调用此处理程序。 这是一个Ajax事件。

[解]

原来这个问题与跨域请求有关。 更新服务器代码以根据以下链接添加“Access-Control-Allow-Origin”标头解决了该问题

Javascript – 请求的资源上没有“Access-Control-Allow-Origin”标头