访问被拒绝IE上的jQuery脚本

我有一个使用jQuery 1.4.2脚本的iframe。 同样的iframe被注入httphttps站点。 jQuery脚本作为相对path包含在主HTML文件中(例如/scripts/jquery-1.4.2.min.js)。

当进行AJAX调用时,Internet Explorer拒绝访问。 AJAX正在调用另一个子域,但它使用正确的协议。 所有其他浏览器的工作,但Internet Explorer提供以下错误:

SCRIPT5:访问被拒绝。
jquery-1.4.2.min.js,行127字符344

我听说这个错误是来自跨域的AJAX调用。 但为什么IE是唯一一个给我废话? 有没有一个IE解决scheme?

另外,这是我的AJAX:

  $.ajax({ url: thisURL, dataType: "json", data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()}, success: function(ret){ callback(ret) } }); 

IE需要你使用XDomainRequest而不是XHR作为跨站点,你可以尝试像…

 if ($.browser.msie && window.XDomainRequest) { // Use Microsoft XDR var xdr = new XDomainRequest(); xdr.open("get", url); xdr.onload = function() { // XDomainRequest doesn't provide responseXml, so if you need it: var dom = new ActiveXObject("Microsoft.XMLDOM"); dom.async = false; dom.loadXML(xdr.responseText); }; xdr.send(); } else { // your ajax request here $$.ajax({ url: thisURL, dataType: "json", data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()}, success: function(ret){ callback(ret) } }); } 

参考

http://forum.jquery.com/topic/cross-domain-ajax-and-ie

不确定它是否适合您的情况

 xdr = new XDomainRequest(); xdr.onload=function() { alert(xdr.responseText); } xdr.open("GET", thisUrl); //thisURl ->your cross domain request URL //pass your data here xdr.send([data]); 

你可以在这里find更多的指导

这为我优雅地解决了这个问题:

https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest

只需在jQuery之后和脚本之前安装/编译,并像平常一样使用$ .ajax方法,其余部分将自动处理。

你有没有尝试使用最新的JQuery(> jquery-1.8.0)? 自1.8.0版本以来,他们解决了一些IE9的错误。 也许这个也是。

http://blog.jquery.com/2012/08/30/jquery-1-8-1-released/

我有一个类似的问题,我的解决scheme是使用jsonp而不是json。 这样我就不必为IE打出一个客户版本了。

如果json服务器主机支持callback请求variables,或者您有权访问服务器并可以添加支持,则只能这样做。 这是一个帮助我理解过程的页面。 它的.net MVC重点,但它提供了一个JSON和JSONP之间的差异很好的看法。

http://blogorama.nerdworks.in/entry-EnablingJSONPcallsonASPNETMVC.aspx

检查您正在访问的域,以下响应标题应该在那里

 "Access-Control-Allow-Methods" : "POST, GET, OPTIONS" "Access-Control-Allow-Origin" : "http://www.mydomain.com" or "*" 

其他域应该允许你的脚本请求。 要添加到您的回复的另一个标题是P3P标题。

 "p3p" : "CP=IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT" 

它应该帮助你。

我将我的JQuery从版本1.10.1更改为1.10.2 ,似乎已经解决了我的这个问题。

我正面临类似的问题。 我正在使用file upload控制,但它是隐藏的,我有另一个元素试图控制file upload和事件以ajax方式上传文件

尝试直接使用file upload控制。 这个问题在我的应用程序中解决

看来,MS正在find自己的做法,而不是采取行业build议。 我在这里find了解决scheme:
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest/blob/master/jQuery.XDomainRequest.js

我得到这个错误(因此谷歌在这里),但原因是非常不同的。 所以,如果你没有跨网站,仍然得到这个访问被拒绝的错误:仔细检查发送的
让我们说,你影响你的一个variables与不好的以下expression式:

 urlVar = $("theID").val // without () this was the error! 

ajax电话:

 data: {cmd : 'getMessage', uurl: urlVar, t: Math.random()}, 

谷歌/ FF没有问题,这(检查什么是接收服务器端…),但IE拒绝发送这个!

只需添加“callback =?” 在您的ajax URL请求像这里: http : //wsvdmeer.blogspot.com.es/2012/08/bugfix-getjson-not-working-in-ie.html