HTTPURLConnection 不遵循 HTTP 到 HTTPS 重定向
在某些情况下,开发人员会遇到意外行为,即 Java 的 HTTPURLConnection 无法遵循 HTTP 重定向到 HTTPS URL。
原因问题
此行为的根本原因在于 HTTPURLConnection 的设计。默认情况下,只有在保持相同协议的情况下才会遵循重定向。这意味着该类不会自动处理从 HTTP 到 HTTPS 的重定向。
安全影响
出于安全考虑,强制执行此限制。尽管 HTTPS 与 HTTP 相似,但从技术角度来看,HTTPS 被认为是一种不同的协议。在未经用户批准的情况下遵循 HTTPS 重定向会引发安全问题,特别是在自动配置 HTTP 而不是 HTTPS 的客户端身份验证的情况下。
解决方案
不幸的是,没有选项禁用此检查,因此无法使 HTTPURLConnection 遵循 HTTP 到 HTTPS重定向。
解决方法
要解决此限制,开发人员可以通过解析 HTTP 响应中的 Location 标头并向 HTTPS 发起新请求来手动遵循重定向网址。或者,他们可以利用支持 HTTP 和 HTTPS 重定向的库或框架。
以上是为什么 HTTPURLConnection 不遵循 HTTP 到 HTTPS 的重定向?的详细内容。更多信息请关注PHP中文网其他相关文章!