Tomcat: проблема с перенаправлением с HTTP на HTTPS - PullRequest
2 голосов
/ 23 ноября 2010

Я делаю некоторые модификации в существующем веб-приложении, которое использует Struts и развертывает на Tomcat. Я пытался перенаправить свое приложение с HTTP на HTTPS, когда пользователь посещает одну конкретную страницу. Для этого я добавил в свой web.xml:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>secured page</web-resource-name>
    <url-pattern>/secured.do</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>

и на мой server.xml:

<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile=".keystore"
keystorePass="password" />

и это сработало. Проблема заключалась в том, что после перенаправления пользователя на HTTPS он не возвращается к HTTP, даже когда посещает другую обычную страницу. У меня вопрос: нормально ли это поведение, и должны ли упомянутые ранее конфигурации делать это? Или что-то связано с приложением, которое вызывает такое поведение? Спасибо

1 Ответ

2 голосов
/ 24 ноября 2010

Да, это нормальное поведение на Tomcat.

Как только он переходит в https, он не будет перенаправлять другие URL-адреса обратно в http, если он явно не предназначен для http.

Вы можете попробовать добавить его в блок незащищенного шаблона URL-адреса вweb.xml, но это все равно не будет автоматически перенаправлять на http после https.

 <user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>

Если вам действительно нужно , вам нужно будет написать Filter, чтобы проверить, не является ли URL частью защищенного шаблона, затем перенаправить обратно на http.

...