Запросы Ajax обходят прокси-сервер ripple xhr

Я использую эмулятор Ripple в течение некоторого времени, но после переустановки он больше не использует прокси-сервер XHR CORS при запросе междоменных ресурсов.

Я попробовал предложенный тестовый код в: Интернет недоступен из эмулятора ripple

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "http://www.bing.com", true);
xmlhttp.send();

Но запрос не проходит через Ripple XHR Proxy.

Запрос:

GET / HTTP/1.1
Host: www.bing.com
Connection: keep-alive
Origin: http://localhost:4400
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36
Accept: */*
Referer: http://localhost:4400/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: da,en;q=0.8,en-US;q=0.6

Ошибка:

XMLHttpRequest cannot load http://www.bing.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4400' is therefore not allowed access.

Междоменный прокси настроен на: локальный

Вроде запускает прокси:

INFO: Server instance running on: http://localhost:4400
INFO: CORS XHR proxy service on: http://localhost:4400/ripple/xhr_proxy
INFO: JSONP XHR proxy service on: http://localhost:4400/ripple/jsonp_xhr_proxy
Cordova 3.0 Project detected...
INFO: Could not find cordova as a local module. Expecting to find it installed globally.
INFO: Using Browser User Agent (String)
refreshing project (platform: android) ...
... done.

Любые предложения о том, что я делаю неправильно здесь?


person KasperT    schedule 30.01.2016    source источник
comment
По какой-то причине он работает в Microsoft Edge, но не работает в Chrome.   -  person KasperT    schedule 30.01.2016


Ответы (1)


В других сообщениях люди предлагали использовать расширение Chrome CORS, но начиная с Chrome 48 все расширения CORS, похоже, перестали работать.

Я разместил этот обходной путь в Visual Studio, эмулятор Ripple. и CORS/Cross Domain Ajax, но я еще раз опишу это ниже:

  1. В каталоге установки Chrome — возможно, C:\Program Files (x86)\Google\Chrome\Application — создайте ярлык для chrome.exe
  2. Щелкните правой кнопкой мыши по этому ярлыку и выберите «Свойства».
  3. На вкладке «Ярлык» в поле «Цель» добавьте следующие два поля --allow-file-access-from-files --disable-web-security 4 . Сохраните это и переименуйте ярлык в «Google Chrome — отладка с помощью Ripple».
  4. Щелкните правой кнопкой мыши по нему и выберите Закрепить в меню «Пуск».

Этот ярлык позволит вам запускать Chrome без веб-безопасности, что позволяет использовать CORS в Ripple. Использование ярлыка не помешает обычному использованию Chrome. Теперь, чтобы использовать Ripple

  1. В Visual Studio отладьте свое приложение, которое запустит Ripple в собственном экземпляре Chrome.
  2. Теперь откройте меню «Пуск» и щелкните закрепленный ярлык «Google Chrome — Отладка с помощью Ripple».
  3. Второй экземпляр Chrome запустится с предупреждением «Вы используете неподдерживаемый флаг командной строки: -- отключить веб-безопасность. Стабильность и безопасность пострадают».
  4. Скопируйте URL-адрес прокси-сервера Ripple из экземпляра Visual Studio в этот новый, например, http://localhost:4400/index.html?enableripple=cordova-3.0.0-NexusS
  5. Ваши запросы CORS теперь будут работать в Ripple.

Обратите внимание, что Visual Studio только что использовалась для запуска Ripple. Отладка должна выполняться с помощью инструментов разработчика Chrome.

Также обратите внимание, что вы можете дважды проверить, использует ли Chrome ваши ярлыки, перейдя по URL-адресу chrome://version/

Не забудьте протестировать и на устройстве, но как только вы докажете, что ваше приложение работает, описанное выше упрощает повседневную отладку.

person Chris    schedule 04.02.2016