我正在尝试强制连接到http://localhost:8443
。https://localhost:8443
如果他们转到 ,网站将正常运行https://localhost:8443
。如果用户忘记了s在 https 中我希望 tomcat 能够为他们纠正这个问题。
我只有一个用于 https 的连接器,定义为:
<Connector port="8443" rediretPort="8443"
protocol="HTTP/1.1"
connectionTimeout="20000"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keyAlias="alias"
keystoreFile="keystore.jks"
keypass="PASSWORD"
/>
这是在 Windows 服务器上。Tomcat 6 是一个独立服务器(未连接到 IIS)。
我尝试修改 web.xml 以包含以下内容:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Context</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
这对我来说不起作用。据我所知,这会将用户从重定向http://localhost:8080
到https://localhost:8443
(如果连接器 8080 定义了重定向端口如 8443)。
我不确定这是否可以通过独立的 Tomcat 服务器实现。我知道使用 apache mod_rewrite 或其他类似解决方案可以实现,但我不想在 Windows 机器上安装任何其他服务。
答案1
当你的第一句话不是拼写错误时,只需在端口 8080 上添加一个 http 连接器,并按照你的描述添加重定向。你不能让 http 和 https 监听同一个端口。所以让 http 监听端口 8080,让 https 监听端口 8443。