【问题标题】:Redirect to a POST Route using PHP使用 PHP 重定向到 POST 路由
【发布时间】:2015-01-10 13:34:32
【问题描述】:

我要做的是将用户名和密码发送到 larval 中的 GET 路由,然后使用用户名、密码、client_secret 和客户端 ID 重定向到 post 路由,以便我可以保护客户端 ID 和密码,因为请求是从 Android 应用程序发送的。

请记住,我尝试与之通信的 API 是为我的应用程序明确构建的。

【问题讨论】:

  • 请添加一些您正在处理的代码。
  • 使用 GET 传递用户名和密码是一个巨大的安全问题 - 不要这样做。
  • 从 post 路由重定向到 post 路由也可以。
  • @whit3hawks 我下面的回答对你有帮助吗?
  • 谢谢,curl 方法如我所愿!

标签: php laravel laravel-4


【解决方案1】:

据我所知,使用 HTTP 协议无法重定向到 POST 请求以及 POST 变量(因此 PHP 也无法做到)。但是,您可以使用一组变通方法来实现相同的效果。我在这里列出其中的三个。您可以选择适合自己的。

1。使用 Curl api 从 PHP 本身发出 post 请求并发送所需的响应

而不是重定向(请注意,client_id 和 client_secret 可能是您不想传输给未知客户端的安全信息)。因此,您可以直接从 PHP 脚本发出 POST 请求并发送第二个 URL/API 给出的响应。

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.secondsite.com/api.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=$uname&password=$pass&client_id=$c_id");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec ($ch);
curl_close ($ch);

echo $server_output; // echo the output from the second server
// You might even require to get the headers from the response and send them too

?>

2。使用 HTML 和 Javascript 发出 POST 请求。

<form action='api.php' method='post' name='frm'>
<?php
    echo "<input type='hidden' name='username' value='$username'>";
    echo "<input type='hidden' name='password' value='$pass'>";
    echo "<input type='hidden' name='client_secret' value='$client_sec'>";
    echo "<input type='hidden' name='client_id' value='$client_id'>";
?>
</form>
<script language="JavaScript">
    document.frm.submit();
</script>

这个想法很简单。 PHP 页面以包含您打算作为隐藏输入发布的所有字段的表单进行响应。然后一些内嵌的 Javascript 立即提交表单。

3。如果两个脚本都在同一台主机上运行,​​请使用 SESSION 变量

并将 GET 请求重定向到第二个 URL。请注意,两个脚本必须位于同一台服务器上才能正常工作。 您可以在此处阅读有关如何使用 PHP 会话的信息:How to use PHP Sessions

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 2020-06-28
    • 2017-06-19
    • 2015-06-05
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    相关资源
    最近更新 更多