使用特殊的POST标头重定向

时间:2011-09-10 13:33:04

标签: php redirect https http-headers

在我的系统中,用户会将数据输入到表单中,然后由PHP脚本处理。

这个php脚本会操纵这些数据,然后需要将用户重定向到https页面,还要发送自己的POST参数。

因此,例如,如果调用

send-me.php?name=chuck+norris
,则应将用户重定向到
https://secret.hideout.com/
,其中POST参数为
is_chuck="1"
be_polite="definitely"
run_away="what's the point?"

这可能吗?怎么样?

由于

4 个答案:

答案 0 :(得分:4)

如果你不控制目标站点,我唯一可以看到这样做的方法是在PHP页面上有第二个<form>,其中https:// URL作为目标,值作为隐藏的领域。

但是,这样,PHP脚本更改后,用户仍可以操作这些值。

或者,根据您需要做的事情的性质,考虑在发布表单之前使用JavaScript在客户端操作值。

答案 1 :(得分:2)

您无法重定向到包含POST参数的网址。

您可以重定向到带有GET参数的网址(附加到网址末尾):

https://secret.hideout.com/?is_chuck=1&be_polite=definitely&run_away=now

您可以使用CURL调用带有POST参数的URL,但不能重定向到它。

答案 2 :(得分:1)

我认为最好的方法是创建表单并从javascript调用提交。

解析你需要的数据后,在send-me.php中的

,显示这个html:

<form name="send" action="https://secret.hideout.com/" method="post">
<input type="hidden" name="is_chuck" value="1" />
...
</form>
<script type="text/javascript">
document.forms.send.submit();
</script>

然而这有缺点:

  • https://secret.hideout.com/将通过您发送客户端的Referer标题知道,并将其发送到他的页面。
  • 客户端可以篡改帖子数据以了解发布的内容。

另一方面,你可以建立邮局服务器端,但客户端将没有正确的navgation因为cookie等。

答案 3 :(得分:0)

  

需要将用户重定向到https页面,但也需要发送自己的POST参数。

那是不可能的。 POST是请求标头,而不是响应。

因此,不要干扰用户和任何服务 总有一种合法的方式来获得交易结果。用它。