110

我需要使用foursquare API搜索场地。当然是跨域的。

它在Firefox中没有任何问题,但在Internet Explorer中(我测试过7、8、9)。

我的javascript代码如下所示:

searchVenues:函数(searchQuery){$.ajax(美元)({url:'https://api.foursquare.com/v2/venues/search网站',数据:{sw:边界西南,ne:bound_north_east,query:searchQuery.query,oauth_token:FSQ_oauth_token,限制:25,intent:'浏览',v: 2012年2月6日},缓存:false,dataType:“json”,成功:函数(数据){显示结果(data,searchQuery.query);},error:函数(xhr、status、errorThrown){console.log(errorThrown+'\n'+status+'\n'+xhr.statusText);}});}

在Firefox中,它完美地显示了收到的数据。在Internet Explorer中,它登录控制台:

禁止运输错误错误

我该怎么办?

1

5个答案5

重置为默认值
267

我在Windows Mobile 7上对此进行了测试。

在花了很多时间理解之后,我终于发现:

http://bugs.jquery.com/ticket/10660

解决方案很简单,只需设置以下内容:

$.support.cors=true;

Ajax跨域请求也能正常工作!

10
  • 47
    我在IE8和IE9上也收到“错误:访问被拒绝” 评论 2013年11月8日20:55
  • 1
    令人沮丧的是,公认的答案并没有真正解决IE8或IE9上的问题。 评论 2013年12月8日23:46
  • 2
    我也有类似的问题。适用于IE10,但不适用于IE8或IE9 评论 2014年2月17日12:46
  • 7
    我还收到了“错误:访问被拒绝”,我的错误是我从HTTP域中提取了HTTPS内容。确保您的网站和ajax目标使用相同的协议(HTTP或HTTPS)
    – 托本
    评论 2014年3月13日13:49
  • 2
    我认为现在这是默认设置。对我来说,解决方案是XDR请求传输—请参阅以下常见答案:stackoverflow.com/a/10232313/217866 评论 2014年12月17日20:11
13
jQuery.support.cors=true;$.ajax(美元)({crossDomain:true,url:“”,类型:“POST”,dataType:“xml”,数据:soapMessage,});

您需要将跨域值设置为true

4
6

尝试此解决方案:

https://stackoverflow.com/a/14463975/237091

或者,只需在包含jquery之后将这些代码放在HTML中即可。

<!--[如果是lte IE 9]><script type='text/javascript'src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script><![结尾]-->
6

这个问题困扰了我一段时间。作为一种解决方法,我使用位于同一站点上的代理脚本。这样的脚本只需执行服务器到服务器的非ajax HTTP请求(想想curl和WinHttp.WinHttpRequest),并将状态和数据传递回调用方。它可以工作,但显然效率不是很高,因为它必须执行两个HTTP请求。

在我的例子中,解决方案是上述所有内容加上“Access-Control-Allow-Origin”标题的组合。

$.support.cors=true;//这必须在$.ajax({})配置之前$.ajax(美元)({crossDomain:true,//添加到jQuery 1.5中标题:{“Access-Control-Allow-Origin”:“*”},...});

响应这些调用的web服务也使用“Access-Control-Allow-Origin:*”标头进行响应。

  • 4
    ……然而,这是第一个提到CORS头的答案。接受的解决方案对我不起作用。 评论 2015年1月22日9:06
  • 2
    我想这应该在服务的web.config中。
    – 福约德
    评论 2015年4月30日14:50
  • 将该头添加到客户端请求没有意义;它是响应标头. 评论 2022年10月26日14:00
0

我刚更改了jquery版本并替换了CDN链接,它就工作了!只要做它如果crossDomain:真$.support.cors=true无效。

<script src=“https://code.jquery.com/jquery-3.5.1.js“integrity=”sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=“crossorigin=”anonymous“></script>
0

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.