Javascript Ajax请求";“访问被拒绝”;在IE中
我使用ajax请求来检查网站的响应,如下所示:Javascript Ajax请求";“访问被拒绝”;在IE中,javascript,ajax,jquery,Javascript,Ajax,Jquery,我使用ajax请求来检查网站的响应,如下所示: $.ajax ({ url: 'https://www.example.com', cache: false, success : function() { alert(new Date() - start) }, }) 它可以在我的本地pc上的所有浏览器中运行。当我把它放在服务器上时,它在Chrome和Firefox中工作,但在IE8中不工作 我得到一个错误:“访
$.ajax ({
url: 'https://www.example.com',
cache: false,
success : function() {
alert(new Date() - start)
},
})
它可以在我的本地pc上的所有浏览器中运行。当我把它放在服务器上时,它在Chrome和Firefox中工作,但在IE8中不工作
我得到一个错误:“访问被拒绝”jquery.min.js
为什么我会出现这个错误?引用另一个非常类似的问题中的“epascarello”:
由于同源策略,对子域的调用被视为不同的域。确保将document.domain设置为避免使用同源策略拒绝访问
要同步document.domain,需要在两个位置设置它。添加一个设置域的脚本标记,页面上需要有一个iframe,用于在另一个域上设置相同的内容
Ajax调用来自“www.example.com”并正在调用“Ajax.example.com”的页面:
document.domain=“example.com”;
“domainCode.html”将只包含脚本标记
<html>
<head>
<script type="text/javascript">
document.domain = "example.com";
</script>
</head>
<body>
</body>
</html>
document.domain=“example.com”;
有了它,你应该能够在你的子域之间进行对话
希望有帮助 在我的情况下,问题是由于兼容模式造成的。我在intranet中,internet explorer以兼容模式运行。 我添加了下面的标签,这解决了我所有的问题。它强制IE不使用兼容模式
<meta http-equiv="X-UA-Compatible" content="IE=Edge" >
--2014年1月--IE8和IE9使用不同的方法(XDomainRequest)与跨域通信。 如果使用jQuery:,应考虑使用此方法。
确保使用与原始呼叫相同的协议,即HTTP或HTTPS。我在IE8中遇到了这个问题。对我来说,解决这个问题的方法是将ajax请求更改为使用与原始页面请求相同的协议。在我的例子中,原始页面是通过https请求的,ajax请求是使用http的。将它们都切换为使用https解决了这个问题。注意--注意 在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);
真实状态:
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);
var AJAXobj=createAjax();
AJAXobj.onreadystatechange=handlesAJAXcheck;
open('POST','dir/getSecurityCode.php',true);//不确定您要获取的确切URL,但1。看看科尔斯。此外,如果您是一个https站点,引用非https站点(尽管我看到您的示例URL有https),那么从技术上讲是不安全的。我发现浏览器的处理方式不一致,但只是一个注释。这段代码与您试图请求的URL位于同一个域上,对吗?你可能违反了规定。你读过这篇文章吗?我将尝试调用http网站,以确定这是否是原因。从http页面删除HTTPS页面将被视为“跨域”请求,浏览器不允许这样做。您需要使用CORS(在IE8中无法100%工作)或JSONP。试图让ie10使用CORS时失败,出现错误访问被拒绝
错误,这是因为我头部有一个meta标记,告诉浏览器在ie9兼容模式下运行