我们有一个运行在Apache Tomact 8.0.36中的Java Web应用程序。 配置了HTTP端口80,并配置了HTTPS端口443。如下所示,在web.xml中配置了重定向到HTTPS的操作:
<security-constraint>
<web-resource-collection>
<web-resource-name>restricted methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>OPTIONS</http-method>
<http-method>DELETE</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
现在,端口80在已部署应用程序且未发生重定向到HTTPS的服务器中已被阻止。 当HTTP端口被阻止时,有什么方法可以使HTTPS重定向正常工作?
答案 0 :(得分:1)
当HTTP端口被阻止时,有什么方法可以使HTTPS重定向正常工作?
我想您的意思是被服务器或其前面的防火墙阻止。
基本上,答案是否。
为了使服务器中的任何形式的HTTP重定向都能正常工作,服务器必须能够在端口80上获得传入的连接HTTP请求。(然后它将发送3xx响应,告诉浏览器使用不同的URL。该URL将是HTTPS URL。)
如果HTTP请求在服务器获得请求之前被阻止,那么自然就无能为力。
此外,如果您尝试做一些聪明的事情,例如将端口80映射到防火墙中的端口443,最终将向HTTPS服务器端口发送HTTP请求。这将失败,因为HTTPS服务器需要SSL / TLS协商的东西。可能只是关闭连接。
如果确实需要支持此功能,则需要在服务器前面实现HTTP / HTTPS代理,然后将重定向发送回用户的浏览器。但这有点愚蠢。
如果您确实要强迫人们使用HTTPS,请执行以下一项操作:
如果您试图逃避不合作的管理员的网络封锁,我建议您不要打扰。他们大概有其原因。
答案 1 :(得分:0)
您尝试过吗?
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>