Вопрос

Как обойти проблему межсайтового скриптинга 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)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top