В простой установке Tomcat 7 с HTTPS отправка HTTP- запроса через порт HTTPS возвращает странный ответ из трех управляющих символов:

$ wget -q -S -O - http://127.0.0.1:8443/
^U^C^@

[Я использовал комбинацию «карет-чар», так как не могу вставить оригинал.]

Если возможно, я хочу изменить его на перенаправление на https или вернуть 404 или другое пользовательское поведение. Это возможно?

1 ответ1

0

Отправка HTTP на выделенный порт HTTPS обычно не ожидается, хотя возможно. На практике, производство работает на 80 и 443 портах, так что на самом деле это не проблема, если кто-то не занимается "взломом". Если используются разные порты (например, Tomcat по умолчанию), проблема может возникнуть только потому, что люди забудут ввести "https" перед URL.

В любом случае стандартным поведением является возврат HTTP 400 Bad Request . Это сделано, например. веб-сервером Apache.

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're speaking plain HTTP to an SSL-enabled server port.<br />
Instead use the HTTPS scheme to access this URL, please.<br />
</p>
</body></html>

Коннектор Tomcat TLS/SSL HTTP явно не делает этого, и я подозреваю, что он отвечает некоторым сообщением об ошибке подтверждения связи TLS (частично обсуждается здесь https://stackoverflow.com/questions/7164944/unexpected-results-when-attempting-to -access-tomcat-6-https-connector-using-http).

В работе SSL обычно завершается на обратном прокси-сервере (таком как Apache), который изящно обрабатывает даже такой плохой запрос (как описано выше).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .