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