Yii2-在外部URL上执行http表单POST并重定向到它



我在Yii2上有一个应用程序。

我有一个外部供应商,我想重定向。例如,我正在加密当前用户信息,并希望将其发送给外部供应商,因此用户信息会自动填充在他的网站上。

如果我在前端使用JS,一切都很好。

我遇到的问题是,只有我的应用服务器被列入了供应商的白名单。所以我需要在后端进行重定向。

我尝试了几种方法,甚至使用了Guzzle HTTP,但它不会重定向。

需要明确的是,我不是在寻找一个简单的重定向,它是一个外部URL上的表单帖子。

我浏览了这篇文章,但问题仍然存在。。。Yii2如何将表单请求发送到外部url

有人面临这个问题吗?

如果我理解正确,您希望将从前端接收的数据POST到第三方公司的服务器(我们称之为ACME(。你的网络服务器被ACME列入白名单,但你的客户没有(这很好(。您想在POST后在服务器上显示一个页面,而不是在ACME服务器上显示页面,对吗?

您必须从服务器向ACME服务器发送带有单独请求的数据。您不能创建HTML<form>并将ACME服务器放在其action参数中,因为请求将从客户端而不是后端发送,在白名单中失败。验证客户端输入后,您可以将其与guzzle一起发送到ACME。

通过状态代码,您可以决定您的请求是否成功。你可以在这里阅读更多关于狂饮

下面的代码示例显示了如何将$payload(如果愿意的话,这是一篇虚构的博客文章(作为JSON POST到ACME服务器,并输出一行请求结果。

$payload = [
'username' => 'john.doe',
'postContent' => 'Hello world',
];
$client = new GuzzleHttpClient();
$response = $client->post('https://acme.example.org/endpoint',['http_errors' => false, 'json' => $payload]);
if($response->getStatusCode() === 200){
echo "Request OK";
}else{
echo "Request failed with status ".$response->getStatusCode();
}

最新更新