SCRIPT5: доступ запрещен в IE9
Я не могу получить доступ к URL-адресу с помощью этого сценария в IE9. В 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"]);
}
1 ответ
Это происходит, когда вы пытаетесь получить доступ к ajax-запросу из другого домена на своей главной странице. (В этом случае вы получаете доступ к URL из Facebook).
Если вам нужен доступ к 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
},
});
надеюсь, это поможет.