Доступ к ограниченному URI запрещен, код: 1012 - PullRequest
28 голосов
/ 09 сентября 2008

Как обойти эту проблему межсайтового скриптинга Ajax в FireFox 3?

Ответы [ 5 ]

20 голосов
/ 09 сентября 2008

Если вы используете jQuery, у него есть функция обратного вызова для преодоления этого:

http://docs.jquery.com/Ajax/jQuery.ajax#options

Начиная с jQuery 1.2, вы можете загрузить JSON данные, расположенные в другом домене, если вы указать обратный вызов JSONP, который может быть сделано так: "myurl? callback =?". JQuery автоматически заменяет? с правильным именем метода для вызова, звонить по указанному вами обратному вызову. Или же, если вы установите dataType в «jsonp» обратный вызов будет добавлен автоматически на ваш запрос Ajax.

В качестве альтернативы вы можете сделать запрос ajax серверному сценарию, который выполняет междоменный вызов для вас, а затем передает данные обратно вашему сценарию

6 голосов
/ 24 марта 2009

Чтобы обновить ответ (я полагаю, в основном для моей пользы, когда я позже приду к этому ответу), если вы загружаете XML или что-то еще, вы всегда можете спросить пользователя, разрешит ли он нам читать с другого сайта с этим кодом:

try {
    if (netscape.security.PrivilegeManager.enablePrivilege)
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) { 
    alert("Sorry, browser security settings won't let this program run."); 
    return; 
}

(из книги веб-сервисов RESTful) Но это работает только в Firefox, когда HTML-файл загружается из локального файла. Так что не очень полезно.

1 голос
/ 01 мая 2010

Еще одно решение: если все, что вам нужно, это заголовки, вы можете указать «HEAD» в качестве метода, и это не вызовет проблему безопасности. Например, если вы просто хотите узнать, существует ли веб-страница.

var client = new XMLHttpRequest();
client.open("HEAD", my_url, false);
client.send(null);
if(client.readyState != 4 || client.status != 200) //if we failed
    alert("can't open web page");
0 голосов
/ 14 февраля 2009

Я недавно столкнулся с этой проблемой, и я, как AJAX, загружал локальный запрос, а не проблему межсайтового скриптинга. Кроме того, сам Джимми, кажется, имеет ту же проблему. Похоже, что это проблема безопасности FF, в этой статье описывается причина и решение для доступа к ограниченному коду «код:« 1012 проблема .

Извините, вы получили эту ошибку, используя JQuery $ .ajax на FireFox 3. Пробовал jsonp предложение, но я думаю, что будет только работать с чем-то, что будет служить JSON. Я пытаюсь создать образец локальный HTML-файл на основе коллаж вытащить данные из Yahoo! Finance, но они служат .csv, так что я думаю, что я SOL. - Джимми Чандра (9 сентября в 17:20)

Надеюсь, вы найдете это полезным.

0 голосов
/ 09 сентября 2008

Было бы неплохо узнать больше деталей: какую библиотеку AJAX вы используете, чего бы вы хотели достичь, как вы это делаете.

Например, это может быть междоменный запрос Ajax, который не разрешен. В этом случае используйте JSON .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...