2017-06-07 48 views
0

我有一個Laravel應用程序,我有主應用程序設置,並且我有一個子域來處理與主應用程序相關的特定任務。Laravel發送郵寄請求到另一個子域

比方說,主要程序是:app.xyz.com 和子是:review.xyz.com

的問題是,如何從一個控制器檢討發送POST請求.xyz.com的路線app.xyz.com

這裏是我一直在使用狂飲,這只是默默的失敗嘗試(響應只是主應用程序的登錄屏幕日誌什麼都沒有發生。):

Route::post('approve', function(){ 
    $client = new Client(['base_uri' => env("MAIN_APP_URL")]); 

    $response = $client->request('POST', 'public/approve'); 
    $body = $response->getBody(); 

    return $body; 
}); 

如何在這個CSRF保護工作案件?

+0

用戶是否必須登錄才能進入「public/approve」路由?這可以解釋爲什麼它會將您重定向到登錄頁面。 – mimo

+0

這兩個獨立的應用程序或與子域路由相同的應用程序? –

+0

@mimo其實不是,它沒有設置爲使用任何中間件,所以我的猜測可能是CSRF令牌不匹配異常正在進行重定向。 –

回答

0

通常情況下,如果調用另一個json API,將不會使用csrf。相反,我們使用api標記,如jwt和laravel api_token。因此,在您的gu,中,您將添加授權標題。

$client->request('GET', 'example.com/get', [ 
    'headers' => [ 
     'Authorization' => 'Bearer your-long-api-token', 
     'Accept'  => 'application/json' 
    ] 
]); 
+0

謝謝,通過禁用這些路由上的csrf解決了這個問題,並且只是使用guzzle轉發post參數。去看看你的建議apis來保護這些路線 –

+0

@SeyongCho將您的端點移動到'routes/api.php'而不是使用routes/web.php'(laravel 5.3+) – xmhafiz

+0

這裏是api_token的參考https:// gistlog.co/JacobBennett/090369fbab0b31130b51 – xmhafiz