我在 Tomcat 中无法将 HTTP 重定向到 HTTPS。
在 Server.xml 中我有连接器
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" />
<Connector port="8443" maxHttpHeaderSize="8192" maxThreads="100"
minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
SSLEnabled="true" clientAuth="false"
sslProtocol="TLS" keyAlias="some_alias"
keystoreFile="secret-keystore-files"
keystorePass="Supersafepassword" />
并在 web.xml 中
<security-constraint>
<web-resource-collection>
<web-resource-name>HTTPSOnly</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
HTTPS 工作正常,没有证书问题,但是当我访问 http://server:8080 时,我被重定向到 https://server:8080(相同端口),而不是预期的 8443。
答案1
正如已经回答的那样:
问题是由于浏览器中缓存了重定向位置而导致的。(某些浏览器可能以不同的方式处理重定向缓存)
如果您经常更改位置,请确保不要使用 HTTP 301 重定向...
更多信息: https://stackoverflow.com/questions/9130422/how-long-do-browsers-cache-http-301s
答案2
我的 Chrome 浏览器似乎还剩下一些东西。它适用于 Edge 和隐身模式的 Chrome 浏览器