Код отказа в доступе к ограниченному URI: 1012

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


person Jimmy Chandra    schedule 09.09.2008    source источник


Ответы (5)


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

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

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

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

person Glenn Slaven    schedule 09.09.2008
comment
Что ж, тогда вам нужно использовать второй вариант выполнения междоменного вызова в сценарии на стороне сервера, который передает xml обратно. - person Glenn Slaven; 03.08.2009
comment
Я работаю над JSON, добавляя &callback=? но получая ту же ошибку - person Miroo; 10.10.2011
comment
@Miroo, у меня такая же проблема. Удалось ли вам найти решение? - person abw333; 25.07.2013

Чтобы обновить ответ (я думаю, в основном для моей пользы, когда я буду искать этот ответ позже), если загружается 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-файл загружается из локального файла. Значит, не так уж и полезно.

person Jose M Vidal    schedule 24.03.2009

Еще одно решение: если все, что вам нужно, это заголовки, вы можете указать «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");
person Eyal    schedule 01.05.2010

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

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

person Biri    schedule 09.09.2008
comment
Извините, получил эту ошибку, используя JQuery $.ajax в FireFox 3. Пробовал предложение jsonp, но я думаю, что это будет работать только с тем, что будет обслуживать json. Я пытаюсь создать образец гибридного файла на основе локального html-файла, который будет извлекать данные из Yahoo! Finance, но они обслуживают .csv, поэтому я думаю, что я SOL. - person Jimmy Chandra; 09.09.2008
comment
Волшебство, которое заставляет его работать, — это часть P (заполнение) JSONP, а не JSON как таковой. С установленным сервисом (например, Yahoo, вам, вероятно, не повезло), поскольку они не изменят свой сервис, чтобы сделать его доступным для звонков таким образом. - person jeffreypriebe; 26.11.2009

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

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

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

person Uzbekjon    schedule 14.02.2009