2013-03-25 71 views
0

我无法在IE9上使用此脚本访问URL。在Chrome和Firefox上,它工作正常。当我调试在IE9(F12),我得到:SCRIPT5:访问在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"]); 
} 

回答

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 
    }, 
}); 

希望帮助。

+0

如何获得'xmlHttp.responseText'? – kaub0st3r 2013-04-01 18:16:10

相关问题