Существует ли способ обойти JavaScript / та же политика источника jQuery для локального доступа?

Попытка использовать ajax, getJSON, и функции как этот для выборки внешнего URL от локального (несервер) компьютер разработчика. Существует ли способ обойти ту же политику источника, так, чтобы я мог протестировать локально, вместо того, чтобы иметь необходимость загрузить на сервер?

8
задан ina 14 August 2010 в 04:14
поделиться

4 ответа

Поскольку это проблема разработки, а не проблема конечного пользователя / функциональности, а не сосредоточение внимания на переходе AJAX на другие домены настройте среду разработки в качестве прокси-сервера для получения самых последних данных с рабочих серверов. На самом деле это действительно просто.

Вам нужно будет настроить веб-сервер в среде разработки (если он еще не установлен), а затем настроить сервер для ответа на запросы 404 путем выборки и последующего вывода производственных данных. Вы можете настроить свой сервер так, чтобы собирались только файлы данных AJAX (в противном случае будет сложно отлаживать другие файлы, если производственные ресурсы начнут появляться на ваших страницах разработки). Поэтому, если http://dev.myserver.com/data/json/mydata.json отсутствует, ваш сценарий 404 получит http://prod.myserver.com/data/json/ mydata.json и передать его клиенту. Хорошая вещь в этой настройке заключается в том, что вы можете очень легко использовать фиктивные данные: если файл есть в вашей среде разработки, ваш сценарий AJAX получит это; но если вы затем удалите или переименуете этот файл, вместо этого вы получите производственные данные. Эта функция оказалась настолько полезной, что я не могу ее рекомендовать.

Если вы работаете с XML, я бы рекомендовал дублировать заголовки HTTP в 404.Если ваш процесс 404 отвечает Content-Type из text / html , вы не получите никакого responseXML для анализа.

0
ответ дан 5 December 2019 в 12:54
поделиться

У нас была такая же потребность при разработке нашего веб-приложения. Вот как мы это сделали:

Браузер и сервер обмениваются данными только через JSON.
Весь HTML-код отображается в браузере с использованием PURE (нашего механизма шаблонов JS).
Код браузера разрабатывается локально следующим образом:

Мы добавляем параметр host в URL-адрес приложения:

http://localhost/app.html?host=test.beebole-apps.com

При производстве JSON отправляются на сервер с помощью POST.
Но здесь функция, отвечающая за вызов ajax, отреагирует на параметр host и вместо этого выполнит инъекцию JSONP (GET).

<script src="http://test.beebole-apps.com/?callback=f2309892&json={...}" />
  • f2309892 - это временная функция со случайным именем, которая указывает на метод, который будет обрабатывать ответ.
  • json - это JSON, который мы отправляем на сервер

Это означает, что вам понадобится некоторое сотрудничество с серверной частью, чтобы предоставить вам json, завернутый в функцию обратного вызова, например:

f2309892( /*the json here*/ );

За исключением ограничения размера (вы не можете отправить большой JSON на сервер с помощью GET), он работает как ветер.
Другим преимуществом является то, что вы можете вызывать все разные системы (разработки и тестирования) с одного и того же локального хоста.

4
ответ дан 5 December 2019 в 12:54
поделиться

Есть разные способы обойти это, в зависимости от того, какой браузер вы используете для разработки. Например:

  • В Firefox (Gecko) установите для security.fileuri.strict_origin_policy значение false
  • В Chrome запустите браузер с опцией - allow-file- доступ из файлов

Ссылки: Firefox , Chrome

2
ответ дан 5 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: