Chromium: кросс-доменный запрос от локального скрипта
Реально ли вообще? Пробовал все что нагуглил, ничего не вышло.
Браузер кастомный на основе хромиума, но политика безопасности не тронута. Скрипт запускается от local://nonexistant-localdir/ upd: на основе awesomium |
Цитата:
1. --allow-file-access-from-files 2. --disable-web-security |
У меня нет возможности запускать этот браузер с флагами.
Случайно нашел решение через <iframe>, если кому интересно: 1. фрейм загружает локальный request.html 2. request.html загружает внешний скрипт (там запрос заместо имени скрипта) 3. хттп-сервер обрабатывает запрос и подсовывает нужный скрипт с ответом 4. фрейм изначально локальный, так что same-origin-policy не брыкается, можно тупо получить его содержимое. Что интересно, так это когда я пытался использовать window.name-транспорт, загружать локальный файл мне не позволяло, а так норм. |
Таки этот способ работает только если запросы однотипные и статические, при чем для каждого свой реквест-файл. Но можно ли сделать динамические запросы? Как-то отредактировать содержимое фрейма и перезагрузить его с новым?
|
В итоге сделал так:
function request(str) { var js = document.createElement('script'); js.setAttribute('type', 'text/javascript'); js.setAttribute('src', filename); js.setAttribute('defer', 'defer'); document.getElementsByTagName('HEAD')[0].appendChild(js); } По сути подключаю новые скрипты, которые генерирует самописный http-сервер, и которые просто записывают нужные данные в нужные переменные. Потестил, на вид решение отличное, но здравый смысл подсказывает, что что-то не так. Эти скрипты выполняются лишь 1 раз, но куда деваются потом? Не будет ли утечек? |
Это называется JSONP.
|
Часовой пояс GMT +3, время: 05:02. |