Доступ к ограниченному коду URI запрещен:1012
-
09-06-2019 - |
Вопрос
Как обойти проблему межсайтового скриптинга Ajax в FireFox 3?
Решение
Если вы используете jQuery, у него есть функция обратного вызова для решения этой проблемы:
http://docs.jquery.com/Ajax/jQuery.ajax#options
Начиная с JQUERY 1.2, вы можете загрузить данные JSON, расположенные в другом домене, если вы указали обратный вызов JSONP, который можно сделать таким образом:"myurl?callback=?".jQuery автоматически заменяет ?С правильным именем метода вызову, вызывая указанный обратный вызов.Или, если вы установите DataType на «JSONP», обратный вызов будет автоматически добавлен в ваш запрос AJAX.
В качестве альтернативы вы можете сделать запрос ajax к серверному сценарию, который выполняет для вас междоменный вызов, а затем передает данные обратно в ваш скрипт.
Другие советы
Чтобы обновить ответ (я думаю, в основном для моей пользы, когда я позже приду искать этот ответ), если вы загружаете 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-файл загружается из локального файла.Так что не так уж и полезно.
Еще одно решение:если все, что вам нужно, это заголовки, вы можете указать «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");
Было бы неплохо подробнее:какую библиотеку AJAX вы используете, чего бы вы хотели достичь, как вы это делаете.
Например, это может быть междоменный запрос Ajax, что запрещено.В этом случае используйте JSON.
Недавно я столкнулся с этой проблемой, и это произошло, когда я AJAX загружал локальный запрос, а не проблему межсайтового сценария.Кроме того, у самого Джимми, похоже, та же проблема.Похоже, это проблема безопасности FF, в этой статье описывается причина и решение кода доступа к ограниченному коду uri запрещены:«Проблема 1012.
Извините, получил эту ошибку, используя jQuery $ .ajax на Firefox 3.Попробовал JSONP, но я думаю, что это будет работать только с чем -то, что будет служить JSON.Я пытаюсь создать образец локального Mashup на основе файлов HTML, который будет извлекать данные из Yahoo! Finance, но они служат .csv, так что я думаю, что я Sol.— Джимми Чандра (9 сентября, 17:20)
Надеюсь, вы найдете это полезным.