Запрос HTTPS к HTTP JSONP - PullRequest
       34

Запрос HTTPS к HTTP JSONP

11 голосов
/ 07 марта 2012

У меня проблемы с отправкой запросов JSONP с HTTPS сайта на HTTP сайта.

У меня (нелокальная) среда тестирования через https (с действительнымсертификат), где я могу успешно выполнить все эти запросы кросс-сайт / "кросс-протокол" (с предупреждениями, но без ошибок).

Вывод на консоль Google Chrome Javascript :

The page at https://my.test.environment/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704

Однако в работе (в Google App Engine, поддомене appspot) Google Chrome блокирует все запросы, ожидающие пользователяподтверждение.

Вывод на консоль Google Chrome Javascript (особое внимание [заблокировано] текст):

[blocked] The page at https://production.appspot.com/ ran insecure content from http://non.secure.site/service?jsonCallback=jsonp1331132928704

Я знаю, кто яэто небезопасно, но эти услуги предоставляются сторонними организациями, и пока нет никакой связи SSL.Я действительно смущен этим, потому что я не понимаю, почему работает (с предупреждениями) в тестовой среде, а не в appspot (Google App Engine).

Я пытался исследовать заголовки безуспешно.

Заголовки тестовой среды:

Connection:Keep-Alive
Content-Encoding:gzip
Content-Language:es
Content-Length:2524
Content-Type:text/html;charset=utf-8
Date:Wed, 07 Mar 2012 15:48:30 GMT
Keep-Alive:timeout=15, max=100
Set-Cookie: cookie_info...
Vary:Accept-Encoding

Заголовки APPSpot:

access-control-allow-credentials:false
access-control-allow-origin:*
cache-control:no-cache, must-revalidate
content-encoding:gzip
content-length:47890
content-type:text/html; charset=utf-8
date:Wed, 07 Mar 2012 14:52:02 GMT
expires:Fri, 01 Jan 1990 00:00:00 GMT
pragma:no-cache
server:Google Frontend
set-cookie: coookie_info....
status:200 OK
vary:Accept-Encoding
version:HTTP/1.1

Я понятия не имею, почему это работает в тестовой среде, и тот же подход заблокирован в APPSpot GoogleХром.

Есть мысли?

Ответы [ 3 ]

1 голос
/ 18 сентября 2012

Прокси-сервер Apache сделает запрос к конечной точке от вашего имени.Вы можете даже иметь не-jsonp запросы к службе (json, xml, изображения, публиковать, помещать, удалять и т. Д.), Потому что браузер считает, что он выполняет запрос к тому же домену.

Ваш non.secure.Файл сайта vhost будет содержать что-то вроде

ProxyRequests Off
ProxyPreserveHost On 
<Proxy *>
    Allow from all
</Proxy>
ProxyPass /appspot https://production.appspot.com/
ProxyPassReverse /appspot https://production.appspot.com/

. После того, как вы настроите его, просто позвоните в службу, например ...

http://non.secure.site/appspot/service?jsonCallback=jsonp1331132928704

Google proxypass для получения дополнительной информации

https://serverfault.com/questions/429404/help-me-understand-how-to-use-proxypass

0 голосов
/ 31 декабря 2012

У меня возникла та же проблема при выполнении одних и тех же вещей между http и https. Это междоменная проблема.

Самое важное, что вам нужно, это то, что на стороне сервера, которую вы используете для выполнения curl, нужно установить несколько заголовков, чтобы разрешить соединение http с https. Это ниже ....

header("Access-Control-Allow-Origin: your https url");
header("Access-Control-Allow-Methods: POST, GET");
header("Access-Control-Max-Age: 1728000");

header("Access-Control-Allow-Headers: Content-Type, Connection, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control");
header("Connection: close");
0 голосов
/ 01 октября 2012

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

Создайте сценарий на стороне сервера, к которому будет обращаться только через SSL, и который будет действовать как прокси или сервер пересылки между вашим тегом и API.Таким образом, вы можете повысить безопасность, выполнив свои собственные проверки и проверки данных, и, поскольку вы будете обслуживать их по протоколу SSL, вы не получите никаких ошибок «смешанного содержимого».

Кстати, у меня нетпроверено, что всегда есть вероятность того, что сайты с сертификатом Google от GAE будут работать по-другому.

Надеюсь, что смогу помочь.

...