web-dev-qa-db-ja.com

SCRIPT5:xmlhttprequest上のIE9でアクセスが拒否されました

var xhttp=new XMLHttpRequest();
xhttp.open('GET', 'foo.xml', false);

F12 飛び出します:SCRIPT5:アクセスが拒否されました。 xhttp.open行である95行目。

私のJavaScriptは整形式のようで、Firefoxは私が思っていることをします。

これと非常によく似た質問をたくさん読んだので、Same Origin Policyをチェックアウトしましたが、foo.xmlがhtmlファイルと同じディレクトリにあることを考えると、どのように適用されるかわかりません。ローカルイントラネットでスクリプトのアクセス許可を開き、念のため5分間休憩するようにMcAfeeに指示しました。私は管理者としてIEを実行しようとしたので、これは実際にはアクセス許可の問題になることはありませんか?他の理由でIE ?

46
Eric L
13
Horst Walter

この例は、AJAXを使用して任意のWebサイトからリソースをプルする方法を示しています。ブラウザ間で動作します。IE8-IE10、safari、chrome、firefox、operaでテストしました。

if (window.XDomainRequest) xmlhttp = new XDomainRequest();
else if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();
else xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.open("GET", "http://api.hostip.info/get_html.php", false);
xmlhttp.send();

hostipInfo = xmlhttp.responseText.split("\n");
var IP = false;
for (i = 0; hostipInfo.length >= i; i++) {
    if (hostipInfo[i]) {

        ipAddress = hostipInfo[i].split(":");
        if (ipAddress[0] == "IP") {
            IP = ipAddress[1];
        }
    }
}
return IP;
5
Philips
5
EricLaw

このエラーメッセージ(SCRIPT5:アクセスが拒否されました。)は、.replaceメソッドのターゲットページが見つからない(ページ名を間違って入力した)場合にも発生する可能性があります。私はそれが私に起こったので知っています、それがエラーメッセージの意味についてのより多くの情報を探しに行った理由です。

3
Rockwell1960

IE7、IE8、およびIE9では、[設定]-> [インターネットオプション]-> [セキュリティ]-> [レベルのカスタマイズ]に移動し、[その他]のセキュリティ設定を[有効化]に設定します。

3
Walid Ibrahim

ほとんどの場合、JavascriptをSSL経由で提供する必要があります。

ソース: https://www.parse.com/questions/internet-Explorer-and-the-javascript-sdk

1
Brenden

問題は、ファイルがローカルコンピューターにあり、IEはアクセスを拒否しているためです。ブラウザーが実行されているコンプ上のファイルにスクリプトがアクセスできるようにすると、巨大なセキュリティホールになります。
サーバーまたは他のコンプにアクセスできる場合は、その上にファイルを置いて、Webサイトから実行するようにスクリプトを実行してみてください。

0

おそらくあなたは外部リソースを要求しています、この場合IEにはXDomainオブジェクトが必要です。クロスドメインを持つすべてのブラウザに対してajaxリクエストを行う方法については、以下のサンプルコードを参照してください。

Tork.post = function (url,data,callBack,callBackParameter){
    if (url.indexOf("?")>0){
        data = url.substring(url.indexOf("?")+1)+"&"+ data;
        url = url.substring(0,url.indexOf("?"));
    }
    data += "&randomNumberG=" + Math.random() + (Tork.debug?"&debug=1":"");
    var xmlhttp;
    if (window.XDomainRequest)
    {
        xmlhttp=new XDomainRequest();
        xmlhttp.onload = function(){callBack(xmlhttp.responseText)};
    }
    else if (window.XMLHttpRequest)
        xmlhttp=new XMLHttpRequest();
    else
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
            Tork.msg("Response:"+xmlhttp.responseText);
            callBack(xmlhttp.responseText,callBackParameter);
            Tork.showLoadingScreen(false);
        }
    }
    xmlhttp.open("POST",Tork.baseURL+url,true);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send(data);
}
0
Orhun Alp Oral

IE10でも同様の問題に直面していました。 jQuery ajaxリクエストを使用してデータを取得することで回避策がありました。

$.ajax({
    url: YOUR_XML_FILE
    aync: false,
    success: function (data) {   
        // Store data into a variable
    },
    dataType: YOUR_DATA_TYPE,
    complete: ON_COMPLETE_FUNCTION_CALL
});
0
gautam