3 回答
TA贡献1816条经验 获得超6个赞
HTTP 重定向(即回复状态码 301、302、307,308 和Location
标头)只能将现有请求重定向到另一个位置,而不会更改请求的有效负载。不过,它可以在响应标头中添加一些 cookie。
为了自动将 GET 请求更改为具有特定有效负载的 POST 请求,您可以尝试向客户端发送一个带有<form method=POST...
隐藏输入字段的 HTML 页面和有效负载,即<input name=... value=... type=hidden>
然后将一些 JavaScript 添加到自动提交表单的页面. 但是这种黑客攻击只能在浏览器中运行,并且只有在启用了 JavaScript 的情况下才能运行,并且也不适用于所有类型的有效负载。
为了与更广泛的客户端保持兼容性,最好以不同的方式设计它,即在重定向中保留 GET 请求,但将必要的有效负载作为参数提供给新目标,即http://new.target/foo?payload=....
. 但细节取决于请求的目标可以处理什么。
TA贡献1785条经验 获得超8个赞
我从未听说过将动词从 GET 更改为 POST。我想这是不可能的,因为 POST 假定 body of body(但可能是空的)而 GET 则不然。所以在一般情况下,浏览器将无法从无到有地获取正文。否则是可能的:您可以在 post 后发送 302 重定向以使浏览器执行 get。动词也可以与 307 回复代码一起保留。
尝试重新考虑浏览器与服务器的交互。也许您可以将 POST 重定向到另一个位置来解决任务?
- 3 回答
- 0 关注
- 178 浏览
添加回答
举报