我有一个使用jQuery 1.4.2脚本的iframe。将相同的iframe注入到http和https站点中。jQuery脚本作为相对路径包含在主HTML文件中(例如/scripts/jquery-1.4.2.min.js)。
http
https
进行AJAX调用时,Internet Explorer拒绝访问。AJAX正在调用另一个子域,但是它使用的是正确的协议。所有其他浏览器都可以使用,但是Internet Explorer出现以下错误:
脚本5:访问被拒绝。 jquery-1.4.2.min.js,第127行,字符344
我听说此错误来自跨域AJAX调用。但是,为什么IE是唯一给我废话的人?有IE解决方案吗?
另外,这是我的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]);
您可以在这里找到更多指导