2010-04-25 1 views
3

У меня проблема с методом xhr open(). Мой код следующим образом:XMLHttpRequest open() возвращающий доступ denied

var xmlhttp=false; 

if(!xmlhttp) 
    try 
    { 
     xmlhttp=new XMLHttpRequest(); 
    } 
    catch(e) 
    { 
     xmlhttp=false; 
    } 

function returnPage(url) 
{ 
    if(!xmlhttp) 
     return alert("Your browser doesn't seem to support XMLHttpRequests."); 

    xmlhttp.open("GET",url,true); 
    xmlhttp.onreadystatechange=function() 
    { 
     if(xmlhttp.readyState!=4) return; 
     if(!xmlhttp.status||xmlhttp.status==200) 
      alert(xmlhttp.responseText); 
     else 
      alert("Request failed!"); 
    }; //onreadystatechange 

    xmlhttp.send(null); 
} 

Вызов:

<a href='#' onclick="returnPage('http://www.something.com'); return false;">Link 1</a></p> 

Я использую IE8 (потому что я создаю веб-фрагмент), и я получил сообщение об ошибке "Доступ запрещен". Я нашел в Интернете, что проблема в том, что XHR не работает в разных доменах, но я использовал код из дополнения Firefox, который работает нормально. И этот дополнительный код и «мой» код (то же самое) вызывают одну и ту же страницу. Как у этого дополнения есть доступ, а мой код нет?

ответ

6

Является ли домен, с которого вы звоните AJAX в тот же домен, что и ваш сайт? Вы не можете отправлять запросы другим доменам.

EDIT:

Firefox Дополнения имеют повышенные привилегии (поскольку пользователь должен установить их). Вот почему надстройка может выполнять междоменные запросы.

+0

Нет, и я знал об этой проблеме. Но я смущен тем, как работает надстройка Firefox, кто также делает XHR-вызов на «странице», а мой код - нет? Код тот же. – rjovic

+0

@rjovic - см. Мое редактирование. Надстройки имеют повышенные привилегии, поскольку конечный пользователь должен фактически установить надстройку. – Matt

+2

Что делать, если это локальная страница html, которая должна читать локальный файл с помощью xmlhttprequest.open()? – Maxim