2016-06-17 15 views
1

this SO answerのイベントリスナーを使用して、特定の役割を持つユーザーをリダイレクトします。しかし今、ある役割のために、ユーザーを外部リンクにリダイレクトする必要があります。Symfony2 - イベントリスナーのPOSTデータを含む外部URLに転送しますか?

onKernelResponse()に私が$event応答を設定するとRedirectResponseがPOSTを進めることができない持っているので、(少なくとも、それは私が言われてきたものだ)、私は少しここで失いましたよ。私はどうすればいいのですか?

答えて

2

HTTP 1.1には、要求を繰り返す必要がある307のステータスコードがあります。したがって、このコードでHttp Requestを作成することができます。

301/302は、POSTでは機能しません。もう1つの方法はCURLを使用することですが、他のクライアントを使用しているために違いがあります。

10.3.8 307一時的なリダイレクト

要求されたリソースが一時的に別のURIに存在します。リダイレクションは機会に変更されるかもしれないので、クライアントは今後のリクエストでRequest-URIを使い続けるべきです(SHOULD)。この応答は、Cache-ControlまたはExpiresヘッダーフィールドで指定された場合にのみキャッシュ可能です。

一時URIは、レスポンスのLocationフィールドで指定する必要があります(SHOULD)。要求メソッドがHEADの場合を除き、レスポンスのエンティティは、多くのHTTP/1.1以前のユーザエージェントが307ステータスを理解していないため、新しいURIへのハイパーリンクを含む短いハイパーテキストを含んでいなければならない(SHOULD)。したがって、注釈には、ユーザーが新しいURIで元の要求を繰り返すために必要な情報を含めるべきである(SHOULD)。

GETまたはHEAD以外の要求に応答して307ステータスコードが受信された場合、ユーザーエージェントはユーザーが確認できない限り自動的に要求をリダイレクトしてはなりません(MUST NOT)発行された。

https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

コード:

$response = new RedirectResponse($this->router->generate('your route'), Symfony\Component\HttpFoundation\Response::HTTP_TEMPORARY_REDIRECT); 
+0

感謝。 2つの質問:1.私は外部アドレスのルートを作成する必要がありますか? 2.全体の要求を繰り返す必要がありますか?私はPOSTデータを前に設定しなければならないので... – WRonX

+0

307は、リクエストはブラウザで繰り返さなければならないと言っています。 2.あなたはURLを持つ文字列をRedirectResponseの最初のパラメータに渡すことができる作成ルートは必要ありません – Robert

+0

OK、取得します。だから残念ながら、私が望んでいたものではない、私は要求のデータを変更する必要があります...とにかく、あなたの助けに感謝! – WRonX

関連する問題