HTTPS - это протокол HTTP только через SSL. Он шифрует только пакеты данных, переданные между вашим сервером &, используя сертификаты.
Ваш сервлет не должен беспокоить, какой основной механизм используется. Транспортный протокол - это договор между вашим клиентом & контейнер. Ваш сервлет остается прозрачным, как общение происходит на сетевом уровне.
Предупреждения о перенаправлении, которые вы получаете, могут быть из-за обеспечения безопасности. Как правило, большинство современных браузеров позволяют перейти от HTTP к HTTPS, но не наоборот.
Например, если ваша домашняя страница загружена в HTTPS, но ваш браузер блокирует асинхронные вызовы (любые аякс-вызовы), которые вы делаете через HTTP. Это делается для того, чтобы заставить вас использовать HTTPS на всех страницах вашего сайта.
Там может быть 2 сценария здесь, что вы можете проверить:
1) Вы получаете это предупреждение в браузере клиента. Как я уже объяснял выше, это может быть причиной вашей проблемы.
2) Подобно браузеру, ваш балансировщик нагрузки может выполнять любое такое принуждение безопасности.
Совет: Обычно, когда мы используем перенаправление в нашем сервлете или любом внутреннем коде. Не указывайте протокол явно, где бы вы ни находились. Это может быть в вашем коде перенаправления или в других местах. Даже в тегах анкерных вы создаете
Dont запись:.
<a href="http://mywebsite.com/page1"> page1 </a>
Вместо этого пусть ваш браузер клиента обрабатывать протоколы (дополнительно, если URL находится в том же домене, а также использовать домен относительных URL-адрес Использовать абсолютные адреса только если они являются внешними по отношению к вашему сайту).
<a href="mywebsite.com/page1"> page1 </a>
Этот способ, если тот же код сервлета/бэкэнд будет работать независимо от того, используете ли вы HTTPS или нет.
Еще одна вещь: HTTPS или HTTP через SSL находятся между вашим клиентом & уровнем веб-сервера. Ваш контейнер/сервер приложений не (или не должен) даже знать, что происходит между ними. Также рекомендуется использовать SSL между вашим веб-сервером & Appserver и иметь сквозное шифрование.
Это именно то, что я понял и что сделал. Я просто 'response.sendRedirect ("/context/path/")'. Он будет перенаправлен на 'http: // hostname/context/path /'. Проблема заключается в том, что аппаратный балансировщик нагрузки не разрешает никаких HTTP-запросов. Поэтому после того, как браузер сделает такой запрос, он просто повесит там и, наконец, тайм-аут. Балансировщик нагрузки не то, что я могу коснуться и изменить. –
Привет @JFreebird, где это перенаправление происходит? у вас браузер уже получает URL-адрес с http: // append? Если да, то есть где-то переписывание URL-адресов. Как правило, многие системы (особенно системы управления контентом) не хотят публиковать неработающие URL-адреса, и у них есть что-то, называемое механизмом перезаписи URL-адресов, который перезаписывает URL-адрес с добавлением имени домена и протокола (поэтому конвертирует относительные URL-адреса в абсолютные URL-адреса) , Проверьте, есть ли у вас что-нибудь на вашем уровне webservice или уровне балансировки нагрузки, который делает это. –
Я отправляю перенаправление в свой сервлет, и браузер получает ответ, а затем пересылает URL-адрес перенаправления. Мой браузер получает https: // hostname/path redirect url, а не https. Я думаю, это потому, что сервлет знает только о http, когда он отправляет перенаправление. URL-адрес, отправленный из сервлета, завершен сам по себе, но это http. Поэтому я не думаю, что есть сломанный URL. –