繁体   English   中英

IE中的Ajax请求“访问被拒绝”

[英]Ajax request “Access is denied” in IE

我使用ajax请求来检查网站的响应如下,

$.ajax ({
    url: 'https://www.example.com',
    cache: false,
    success : function() {
        alert(new Date() - start)               
    }, 
}) 

它适用于所有浏览器的本地电脑。 当我把它放在服务器上时,它适用于Chrome和Firefox,但不适用于IE8。

我收到错误: "Access is denied" jquery.min.js

为什么我收到此错误?

对于我的情况,由于兼容模式导致问题。 我在Intranet和Internet Explorer运行兼容模式。 我添加了以下标签,这解决了我所有的问题。 它强制IE不使用兼容模式。

<meta http-equiv="X-UA-Compatible" content="IE=Edge" >

--- 2014年1月---

IE8和IE9使用不同的方法(XDomainRequest)与跨域通信。 如果他们使用jQuery,你应该考虑使用它:

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

确保使用与始发呼叫相同的协议,即HTTP或HTTPS。

从另一个非常相似的问题引用“epascarello”:

由于同源策略,对子域的调用被视为不同的域。 确保您正在设置document.domain以避免使用Same Origin策略拒绝访问。

要使document.domain同步,您需要在两个位置设置它。 添加一个设置域的脚本标记,您需要在页面上设置一个iframe,在另一个域上设置相同的内容。

Ajax调用的页面来自“www.example.com”并且正在调用“ajax.example.com”:

<script type="text/javascript">
    document.domain = "example.com";
</script>
<iframe src="http://ajax.example.com/domainCode.html"></iframe>

“domainCode.html”只包含脚本标记

<html>
    <head>
        <script type="text/javascript">
            document.domain = "example.com";
        </script>
    </head>
<body>
</body>
</html>

有了这个,您应该能够在您的子域之间进行交谈。

希望有所帮助!

注 - 注意不要在ajax中使用“ http://www.domain.xxx ”作为URL。 仅使用没有地址的路径(目录)和页面名称。

虚假状态:

var AJAXobj = createAjax();
AJAXobj.onreadystatechange = handlesAJAXcheck;
AJAXobj.open('POST', 'http://www.example.com/dir/getSecurityCode.php', true);
AJAXobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
AJAXobj.send(pack);

真实状态:

var AJAXobj = createAjax();
AJAXobj.onreadystatechange = handlesAJAXcheck;
AJAXobj.open('POST', 'dir/getSecurityCode.php', true);   // <<--- note
AJAXobj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
AJAXobj.send(pack);

我在IE8中遇到了这个问题。 为我解决的是改变我的ajax请求以使用与原始页面请求相同的协议。 在我的情况下,原始页面是通过https请求的,而ajax请求是使用http。 将它们切换为使用https都可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM