2016-02-23 56 views
0

我有一個使用Laravel構建的無狀態API。我用下面的過濾器,以防止被送回給請求者的所有請求中的Set-Cookie標題:Laravel 4.2 - 禁用選項響應的設置Cookie標頭

Route::filter('auth.firewall', function(){ 
    Config::set('session.driver', 'array'); 
}); 

我的API是從不同的子域比它在主持了一個和OPTIONS請求來調用在任何RESTful請求之前從客戶端發送。在對這些OPTIONS請求的響應中,Laravel仍然發送一個Set-Cookie頭。

我該如何禁用OPTIONS請求的Set-Cookie頭?我想禁用Set-Cookie僅用於API,而不是整個Laravel應用程序,因爲我的網站運行的是相同的Laravel應用程序並使用Larave的會話功能。

這是我的頭設置目前是這樣的:

App::before(function(){ 
    // Allow CORS requests 
    header('Access-Control-Allow-Origin: *'); 
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); 
    header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With, userToken, user_token'); 
    header('Access-Control-Allow-Credentials: true'); 
}); 

回答

0

我添加了一個$request->getMethod()App:before註冊的回調函數。如果請求是OPTIONS請求,我將會話驅動程序設置爲數組。

App::before(function($request){ 
    // Allow CORS requests 
    header('Access-Control-Allow-Origin: *'); 
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS'); 
    header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With, userToken, user_token'); 
    header('Access-Control-Allow-Credentials: true'); 
    if($request->getMethod() == 'OPTIONS'){ 
     Config::set('session.driver', 'array'); 
    } 
});