脚本5:IE9拒绝访问

时间:2013-03-25 19:41:23

标签: javascript internet-explorer internet-explorer-9

我无法在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"]);
}

1 个答案:

答案 0 :(得分:1)

当您尝试从其他域访问主页的ajax请求时会发生这种情况。 (在这种情况下,您正在从Facebook访问URL)。

如果您需要从其他域访问URL,则称为跨站点请求。由于安全隐患,它们在默认情况下被阻止,但仍然可以通过更多的工作来完成它们。

使用jQuery很容易。

奇怪的是,虽然你在问题的标签中包含了jQuery,但你的实际代码根本就没有使用jQuery - 实际上,你提供的整个代码在jQuery中都是一行,加上它适用于跨站点请求。

您需要使用Ajax技术调用JSONP,您可以在jQuery网站上找到它:http://api.jquery.com/jQuery.ajax/

代码看起来像这样:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'https://graph.facebook.com/......',
  success: function () {
    // do stuff
  },
});
希望有所帮助。