我有一个使用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');
});
答案 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');
}
});