我们希望使用Tomcat 8.5将http / 8080重定向到https / 8443。在Firefox 51.x或IE 11中请求http-URL时,URL被重定向到https://server:8080
而不是https://server:8443
这是conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443"
maxKeepAliveRequests="1" />
<Connector port="8443" protocol="HTTP/1.1" scheme="https" URIEncoding="UTF-8"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate ... />
</SSLHostConfig>
</Connector>
这是conf/web.xml
<security-constraint>
<web-resource-collection>
<web-resource-name>server</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
以下是运行wget
$ wget http://server:8080/ -S
--2017-02-13 14:37:09-- http://server:8080/
Resolving server... <IP>
Connecting to server|<IP>|:8080... connected.
HTTP request sent, awaiting response...
HTTP/1.1 302
Cache-Control: private
Expires: Thu, 01 Jan 1970 01:00:00 CET
Location: https://server:8443/
Content-Length: 0
Date: Mon, 13 Feb 2017 13:37:09 GMT
Connection: close
Location: https://server:8443/ [following]
--2017-02-13 14:37:09-- https://server:8443/
Connecting to server|<IP>|:8443... connected.
HTTP request sent, awaiting response...
HTTP/1.1 200
Cache-Control: private
Expires: Thu, 01 Jan 1970 01:00:00 CET
Accept-Ranges: bytes
ETag: W/"1288-1363105010000"
Last-Modified: Tue, 12 Mar 2013 16:16:50 GMT
Content-Type: text/html
Content-Length: 1288
Date: Mon, 13 Feb 2017 13:37:09 GMT
Connection: keep-alive
Length: 1288 (1.3K) [text/html]
Saving to: `index.html'
正如您所看到的,响应是重定向(状态302
)到预期位置https://server:8443/
。由于maxKeepAliveRequests="1"
,原始请求上的连接已关闭。 wget
一切正常。
但是,当将http://server:8080/
输入Firefox或IE的地址行时,它会被重定向到https://server:8080/
:端口不会更改。
修改:当server
更改为服务器的IP(http://IP:8080/
)时,Firefox和IE会按照预期重定向到https://IP:8443/
。
编辑2:清理缓存时,第一个URL重定向按预期工作,而第二个重定向再次失败。这对于Firefox和IE都是如此。 出了什么问题?