Недавно я провел серию тестов, чтобы увидеть, как HTTPS ведет себя с обычными запросами и запросами Ajax в различных ситуациях. Вот результаты тестов (я использовал jQuery для выполнения вызовов ajax):
- При переходе со страницы с Https на обычную Http пользователю будет показано всплывающее окно? Результат: ipod touch (IPT с этого момента) не выдает никакого предупреждения. Ни Chrome. Safari и Firefox вместо этого получат окно с сообщением о том, что вы уходите из безопасной зоны. Мое устройство Android показало поведение, подобное IPT и Chrome.
- При выполнении запроса с использованием ajax на URL-адрес с HTTPS со страницы с HTTPS: как и ожидалось, все работает хорошо, и никаких всплывающих окон не появляется (они не должны появляться, поскольку мы все еще используем зашифрованный канал).
- При выполнении запроса с использованием ajax к URL-адресу с HTTP со страницы с HTTPS (поэтому мы выполняем небезопасный запрос с безопасной страницы): здесь все запросы не выполняются, это видно в javascript по завершении запроса, но это дает пустой ответ. Пользователь не запрашивается никоим образом. Один и тот же результат получается на каждом устройстве и на любом настольном браузере. Тогда невозможно выполнить небезопасные запросы Ajax на небезопасные страницы в одном домене.
- Давайте попробуем сделать HTTP-запрос к другому домену, используя Ajax, со страницы HTTPS. Это может быть потенциальным риском, так как запрос может отправить разумные данные, которые вы получили через HTTPS, используя незашифрованный канал. Удивительно, но это работает на любой платформе без ошибок и жалоб. Это противоречит последнему результату, поскольку я могу делать небезопасные запросы к другим доменам, но не к одному и тому же! Странное поведение ...
Если он позволяет вам делать незашифрованный запрос с зашифрованной страницы, он позволяет вам делать зашифрованный запрос, говорит здравый смысл ... на самом деле мы правы, это происходит на любой платформе.
- Давайте попробуем сделать HTTP-запрос к другому домену, используя Ajax, со страницы HTTPS. Это может быть потенциальным риском, так как запрос может отправить разумные данные, которые вы получили через HTTPS, используя незашифрованный канал. Удивительно, но это работает на любой платформе без ошибок и жалоб. Это противоречит последнему результату, поскольку я могу делать небезопасные запросы к другим доменам, но не к одному и тому же! Странное поведение ...
- Если он позволяет вам делать незашифрованный запрос с зашифрованной страницы, он позволяет вам делать зашифрованный запрос, говорит здравый смысл ... на самом деле мы правы, это происходит на любой платформе.
Я удивлен тем, что он не позволяет выполнять HTTP-вызов Ajax со страницы HTTPS на ваш домен (в этой ситуации это была та же страница) и позволяет вам делать это с другими доменами. Вы знаете больше об этой проблеме?