一尘不染

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

django

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

我发现的唯一选择是通过JavaScript提交表单。

有任何想法吗?


阅读 1479

收藏
2020-04-01

共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与隐藏的表单字段结合使用,在两者之间增加了一个步骤。
2020-04-01