簡體   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