我在 Tomcat 下设置了 SSL,并将某些 url 的端口重定向从 http 到 https(使用安全约束)。重定向有效,但所有原始 POST http 请求都被重定向为 GET,因此原始 POST 请求中的所有参数都丢失了。
如何配置连接器以将 POST 请求重定向为 post?
非常感谢您的帮助!
依靠重定向来升级每个http://
链接通常是不好的做法https://
:这很容易受到 MITM 攻击。理想情况下,您应该https://
只为您的用户提供链接(可能使用 HSTS)。(请参阅Webmasters.SE 上的这个问题。)
升级重定向主要是为了降低风险(假设首先没有 MITM 攻击者),并让用户习惯于看到https://
. 他们最终是唯一能够检查是否使用了 HTTPS 的人。从您的角度来看,请确保您自己的所有指向 HTTPS 部分的链接都https://
直接使用,而不是依赖这些重定向。(出于这个原因,我建议不要在开发过程中启用 http->https 重定向,并使 HTTP 地址等同于那些原本应该是 HTTPS 的地址,只返回 404:至少你会知道它是什么时候休息。)
回到您问题的核心,您肯定会遇到Post/Redirect/Get 模式,这可以被认为与 HTTP 规范不兼容(取决于它的实现方式以及您使用的重定向代码)。
除了关于 Post/Redirect/Get 模式的正确性或有用性的可能参数之外,您应该通过不使用重定向而是https://
直接 POST 到 URI 来解决此问题(一旦您使用 HTTPS,通常最好在您的站点中使用相对 URL )。请记住,POST 的内容将在第一个请求中发送(在它从服务器获得重定向之前),因此窃听者可以看到它,从而使使用 HTTPS 毫无意义(因为它不会在那里使用)。