当浏览器和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”标头