0

我无法在 IE9 上使用此脚本访问 URL。在 Chrome 和 Firefox 上它工作正常。F12当我在 IE9 上调试 ( ) 时,我收到:

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 中的一行,加上它可以处理跨站点请求。

您需要使用称为 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 回答