使用 POST 请求重定向的好方法?

新手上路,请多包涵

我需要通过 POST 请求将用户重定向到外部站点。

我想到的唯一选择是通过 JavaScript 提交表单。


有任何想法吗?

原文由 RadiantHex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 507
1 个回答

不太清楚你的意思,所以让我们来看几个场景:

  1. 用户应该将表单发布到您自己以外的服务器

简单,只需将目标指定为表单操作:

     <form action="http://someotherserver.com" method="post">

  1. POST 提交成功后应重定向用户

很简单,照常接受和处理 POST 数据,然后用 302303 重定向标头响应。

  1. 用户应该将数据发布到您的服务器,并且在验证后,您希望将该数据发布到另一台服务器

有点棘手,但三个选项:

  • 您的服务器接受 POST 数据,当用户等待响应时,您与另一台服务器建立连接,发布数据,接收响应,然后将答案返回给用户。

  • 您用 307 重定向回答,这意味着用户应该在另一个地址尝试相同的请求。从理论上讲,这意味着浏览器应该将相同的数据发布到另一台服务器。我不太确定它的支持程度如何,但任何理解 HTTP1.1 的浏览器都应该能够做到这一点。 AFAIA 它在实践中并不经常使用。

    PS: 规范说 307 POST 重定向需要至少得到用户的确认。 las,显然没有浏览器遵守这里的规范。 IE 只是重复请求(因此它可以满足您的目的),但 Firefox、Safari 和 Opera 似乎会丢弃 POST 数据。因此,不幸的是,这种技术是不可靠的。

  • 使用技术 #1 结合隐藏的表单字段,在两者之间添加一个步骤。

请在此处查看所有 HTTP 重定向选项的列表: http ://en.wikipedia.org/wiki/Http_status_codes#3xx_Redirection

原文由 deceze 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题