Laravel 4.2 - 禁用OPTIONS响应的Set-Cookie标头

时间:2016-02-23 20:46:41

标签: laravel laravel-4

我有一个使用Laravel构建的无状态API。我使用以下过滤器来防止在所有请求中将Set-Cookie标头发送回请求者:

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

我的API是从与其托管的子域不同的子域调用的,并且在任何RESTful请求之前从客户端发送OPTIONS请求。在对这些OPTIONS请求的响应中,Laravel仍在发送Set-Cookie标头。

如何禁用OPTIONS请求的Set-Cookie标头?我想仅为API而不是整个Laravel应用程序禁用Set-Cookie,因为我有一个运行相同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');
});

1 个答案:

答案 0 :(得分: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');
    }
});