Как заставить Chrome / Firefox / Opera выполнять междоменные запросы от localhost? - PullRequest
2 голосов
/ 14 декабря 2010

Hy,

Итак, у меня возникла проблема: я пытаюсь разработать HTML-файл на своем локальном хосте, и все установленные мной браузеры не позволяют отправлять междоменные запросы.

Я пытаюсь преобразовать скрипт, написанный на Python (с Mechanize, pyquery и lxml), в Javascript, причины не имеют большого значения (я думал, что в Javascript будет проще что-то симулировать) .

Междоменные запросы от локальных файлов, используемых для работы, и все еще работают на последней версии Safari (стабильной), но я не могу установить Safari на эту машину (это коробка Linux).

EDIT

Я обнаружил повышенные привилегии Firefox, например ::

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
// among others

Проблема в том, что я также пытаюсь получить доступ к содержимому, загруженному в iFrame ... как я уже сказал, я пытаюсь смоделировать сеанс браузера, как если бы я использовал библиотеку, например Mechanize, но из Javascript. Мой скрипт все еще работает в Safari.

Так как же заставить Chrome / Firefox / Opera обойти все ограничения безопасности для локально хранящихся файлов?

Меня интересует опция командной строки браузера, я бы даже рассмотрел патч для браузера (я пользователь, не пытаюсь распространять его среди других).

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 декабря 2010

Почему бы вам не запустить простой http-сервер вместо этого, чтобы решить вашу проблему?

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler


HandlerClass = SimpleHTTPRequestHandler
ServerClass  = BaseHTTPServer.HTTPServer
Protocol     = "HTTP/1.0"

if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
server_address = ('127.0.0.1', port)

HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)

sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

Этот код на python запускает простой http-сервер, прослушивающий порт 8000 или первый аргумент, и обрабатывает все файлы впапка из этого скрипта.

0 голосов
/ 10 июня 2012

Я не уверен, работает ли это, когда страница находится на localhost, но, возможно, стоит попробовать: http://www.asual.com/jquery/address/

Этот плагин jQuery позволяет вам делать междоменные запросы из любого домена ... Возможно, он может работать с localhost? Хотя не проверял.

0 голосов
/ 14 декабря 2010

Я не уверен, есть ли у вас контроль над содержимым в IFrames, но так как вы говорите о локальных файлах, я думаю, что вы делаете. Эта статья на Ajaxian должна охватывать ваш вариант использования.Поскольку вы ориентируетесь на браузеры класса А (например, не IE), вы можете использовать html5 window.postMessage вместо IFrames.

Cheers, Jon.

У меня нет практических знаний Python Mechanize lib.

...