Приложение HTML/Javascript, работающее в файловой системе, проблема безопасности

Я собираю небольшой инструмент, который некоторые бизнесмены могут запускать на своих локальных файловых системах, поскольку мы не хотим устанавливать для него хост.

В принципе, его просто HTML + Javascript (с помощью jQuery) вытягивает некоторые отчеты с помощью REST от стороннего участника.

Проблема в том, что FF3 и IE не разрешают вызов ajax, я получаю:

Access to restricted URI denied" code: "1012

Очевидно, что это проблема XSS... как мне ее обойти? Возвращенные данные в формате XML.

Я пытался сделать это следующим образом:

$.get(productUrl, function (data){
 alert (data);
});

РЕДАКТИРОВАТЬ. Чтобы быть ясным... Я не настраиваю внутренний хост для этого (путь к многократной ленте), и мы НЕ МОЖЕМ принимать его извне из-за извлекаемых данных.

EDIT # 2: небольшое тестирование показывает, что я могу использовать IFRAME для запроса. Кто-нибудь знает, есть ли недостатки в использовании скрытого IFRAME?

3 ответа

В аналогичной ситуации моим решением было использовать Mark Of The Web, который является специальным комментарием HTML, который IE распознает. Он помещает страницу в другую зону безопасности.

Ссылка: MSDN


Если у вас установлен Python, веб-сервер для работы с файлами может быть таким же простым, как

python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"

Изменить: Оригинальный плакат не может использовать этот подход, но в целом я думаю, что это способ решить эту конкретную проблему для будущих пользователей с этой проблемой.


Вы управляете сервером, предоставляющим данные? Если это так, вы можете настроить обратный вызов. Основная идея заключается в том, что у вас есть функция в script, которая обрабатывает входящие данные (в вашем случае строка XML). Затем сервер отвечает на запрос с помощью фрагмента JavaScript вашей функции обратного вызова со строкой в ​​качестве аргумента. Вместо использования AJAX вы добавляете на страницу новый тег script. Это является основой для JSONP. Это выглядит примерно так.

локальная страница.

удаленный сервер возвращает

callback('');

теперь, когда на страницу будет добавлен script, обратный вызов функции будет выполнен с вашей строкой, которую вы предоставляете. И вызов jQuery делает все это для вас, используя JSONP в вызове $.ajax. Надеюсь, это поможет.

licensed under cc by-sa 3.0 with attribution.