我使用ajax请求来检查网站的响应,如下所示
$.ajax ({
url: 'https://www.example.com',
cache: false,
success : function() {
alert(new Date() - start)
},
})
它适用于所有浏览器的本地电脑。当我把它放在服务器上时,它适用于Chrome和Firefox,但不适用于IE8。
我收到错误:"Access is denied" jquery.min.js
为什么我收到此错误?
答案 0 :(得分:5)
--- 2014年1月---
IE8和IE9使用不同的方法(XDomainRequest)与跨域通信。
如果他们使用jQuery,你应该考虑使用它:
https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
确保使用与始发呼叫相同的协议,即HTTP或HTTPS。
答案 1 :(得分:4)
对于我的情况,问题是由于兼容模式造成的。我在Intranet和Internet Explorer运行兼容模式。 我添加了以下标签,这解决了我所有的问题。它迫使IE不使用兼容模式。
<meta http-equiv="X-UA-Compatible" content="IE=Edge" >
答案 2 :(得分:2)
从另一个非常相似的问题引用“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>
有了这个,您应该可以在子域之间进行交谈。
希望有所帮助!
答案 3 :(得分:1)
注意 - 注意 不要使用&#34; http://www.domain.xxx&#34;用于ajax中的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);
答案 4 :(得分:0)
我在IE8中遇到了这个问题。为我解决的是改变我的ajax请求以使用与原始页面请求相同的协议。在我的情况下,原始页面是通过https请求的,而ajax请求是使用http。将它们切换为使用https都可以解决问题。