2017-03-13 10 views
0

私は、Slim 3 Framework(server1)とデータにアクセス/編集するためのWebサービスサーバー(server2)を備えたPHPゲートを持っています。Slim 3によるリダイレクトPOSTリクエスト

私はユーザー認証を処理し、server1で認証されたルートを定義します。 server1とserver2の間のダイアログは、トークンで動作します。

私のserver1を使用してGET/POSTリクエストをサーバー2に転送したいと考えています。それをする最善の方法は何ですか?

私Server1でスリム

、私はwithRedirectメソッドを使用することができますが、私はそれがPOSTリクエストで動作させることはできません。

$app->post('/api/resource', function ($request, $response, $args) { 
    return $response->withRedirect("http://server2/api/resource?additionla_parameter=value"); 
}); 

は、たぶん私はがつがつ食うやプロキシのようなアプリを使用する必要がありますか?

答えて

2

私は個人的にはGuzzleルートに行きます。つまり、server2と通信するためにサーバー側にクライアントを作成するだけですが、実際にはそのような目的でHTTP 307応答コードがあります。クライアントがリダイレクト中にメソッド(あなたの場合はPOST)を変更すべきではないことを述べています。 https://softwareengineering.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect/99966#99966

私はちょうどスリムなソースを見て、ステータスコードの2番目のパラメータを受け取ります。設定されていない場合はデフォルトで302になります。 https://github.com/slimphp/Slim/blob/3.x/Slim/Http/Response.php#L289を参照してください。だから、これを試してみてください。

$response->withRedirect("http://postplease", 307); 

それは完璧に動作

+0

を働くかもしれません!私はGuzzleの実装をチェックしますが、これはよりクリーンな方法だと思われます。ありがとう! –

関連する問題