0

IE9でこのスクリプトを使用してURLにアクセスできません。ChromeとFirefoxでは正常に動作します。IE9でデバッグ(F12)すると、次のようになります。

SCRIPT5: ACCESS DENIED.

私の機能:

function NewPage2() {
    var xmlHttp;
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlHttp = new XMLHttpRequest();

    } else { // code for IE6, IE5
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttp.open("GET", "https://graph.facebook.com/oauth/access_token?client_id=" +
        '<%=ConfigurationManager.AppSettings["clientId"].ToString() %>' + 
        '&redirect_uri=' + <%=ConfigurationManager.AppSettings["redirectUrl"].ToString() %>' +
        '&state=' + document.getElementById('text').value + 
        '&client_secret=' + '<%=ConfigurationManager.AppSettings["client_secret"].ToString() %>' +
        '&code=' + getUrlVars2()["code"], false);
    xmlHttp.send(null);
    end(xmlHttp.responseText + "&userId=" + getUrlVars2()["state"]);
}
4

1 に答える 1

1

これは、別のドメインからメインページへのajaxリクエストにアクセスしようとしたときに発生します。(この場合、FacebookからURLにアクセスしています)。

別のドメインからURLにアクセスする必要がある場合、それはクロスサイトリクエストと呼ばれます。これらはセキュリティ上の影響のためにデフォルトでブロックされていますが、もう少し作業を行うことで実行できます。

jQueryを使用すると非常に簡単です。

奇妙なことに、質問のタグにjQueryを含めても、実際のコードはjQueryをまったく使用していません。実際、提供したコード全体がjQueryの1行になります。クロスサイトリクエストで機能します。

JSONPを呼び出すAjax手法を使用する必要があります。これは、jQueryサイト(http://api.jquery.com/jQuery.ajax/ )に記載されています。

コードは次のようになります。

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'https://graph.facebook.com/......',
  success: function () {
    // do stuff
  },
});

それがお役に立てば幸いです。

于 2013-03-25T21:50:25.603 に答える