Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax请求";“访问被拒绝”;在IE中_Javascript_Ajax_Jquery - Fatal编程技术网

Javascript Ajax请求";“访问被拒绝”;在IE中

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请求来检查网站的响应,如下所示:

$.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兼容模式下运行