gpt4 book ai didi

java - 当http端口被阻止时将http重定向到https

转载 作者:行者123 更新时间:2023-11-30 02:02:09 27 4
gpt4 key购买 nike

我们有一个在 Apache Tomact 8.0.36 中运行的 Java Web 应用程序。配置HTTP端口80和HTTPS端口443。重定向到 HTTPS 在 web.xml 中配置如下,并且工作正常:

                 <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 重定向起作用吗?

最佳答案

Is there any way to make HTTPS redirection to work when HTTP port is blocked?

我认为您的意思是被服务器中或其前面的防火墙阻止。

基本上,答案是否定的。

为了使任何形式的 HTTP 重定向在服务器内工作,服务器必须能够在端口 80 上获取传入连接 HTTP 请求。(然后,它会发送 3xx 响应,告诉浏览器使用不同的 URL。该 URL 将是 HTTPS URL。)

如果HTTP请求在服务器获取之前就被阻塞了,自然就无能为力了。

此外,如果您尝试做一些巧妙的事情,例如将防火墙中的端口 80 映射到端口 443,您最终会向 HTTPS 服务器端口发送 HTTP 请求。这会失败,因为 HTTPS 服务器需要 SSL/TLS 协商内容。它可能只会关闭连接。

如果您确实需要支持此功能,则需要在服务器前面实现 HTTP/HTTPS 代理,并将重定向发送回用户的浏览器。但这有点愚蠢。

如果您确实想强制人们使用 HTTPS,请执行以下操作之一:

  • 让网络管理员在服务器上打开端口 80,并以正常方式在服务器中实现 3xx 重定向。
  • 保持服务器上的端口 80 关闭,并且不要发布 http://URL。如果某些用户尝试使用 http://URL,他们将收到“连接被拒绝”或“连接超时”...或者浏览器选择向用户描述这些情况。

如果您试图逃避没有提供帮助的管理员的网络阻止,我建议您不要打扰。他们想必都有自己的理由。

关于java - 当http端口被阻止时将http重定向到https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52496177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com