簡體   English   中英

Symfony2-使用來自事件監聽器的POST數據轉發到外部URL?

[英]Symfony2 - forward to external URL with POST data from Event Listener?

我從這個SO答案中使用事件監聽器來重定向具有特定角色的用戶。 但是現在,對於一個角色,我必須使用一些POST數據將用戶重定向到外部鏈接。

由於在onKernelResponse()我必須設置$event響應,而RedirectResponse無法通過POST進行轉發(至少這是我所知道的),所以我在這里有點迷失了。 我該怎么辦?

在HTTP 1.1中,您有307狀態代碼,其中指出應重復請求。 因此,您可以使用此代碼創建Http Request。

301/302不適用於POST。 另一種方法是使用CURL,但這有所不同,因為您隨后使用了其他客戶端。

10.3.8 307臨時重定向

所請求的資源臨時位於其他URI下。 由於重定向有時可能會改變,所以客戶端應該繼續使用Request-URI來處理以后的請求。 僅當由Cache-Control或Expires標頭字段指示時,此響應才可緩存。

臨時URI應該由響應中的Location字段給出。 除非請求方法是HEAD,否則響應的實體應包含簡短的超文本注釋,並帶有指向新URI的超鏈接,因為許多HTTP / 1.1之前的用戶代理不了解307狀態。 因此,注釋應該包含用戶在新URI上重復原始請求所必需的信息。

如果響應GET或HEAD以外的請求而收到307狀態碼,則用戶代理不得自動重定向請求,除非用戶可以確認,因為這可能會更改發出請求的條件。

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

編碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM