我有一个用Laravel构建的无状态API。 我使用以下过滤器来防止 Set-Cookie 标头在所有请求上被发送回请求者:
Route::filter('auth.firewall', function(){
Config::set('session.driver', 'array');
});
我的 API 是从与其托管的子域不同的子域调用的,并且在任何 RESTful 请求之前从客户端发送 OPTIONS 请求。 在响应这些 OPTIONS 请求时,Laravel仍在发送 Set-Cookie 标头。
如何禁用选项请求的 Set-Cookie 标头? 我想只禁用API的Set-Cookie,而不是整个Laravel应用程序,因为我有一个网站运行同一个Laravel应用程序并使用Laravel的会话功能。
这是我的标题设置当前的样子:
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');
});
我在App:before
注册的回调函数中添加了一个$request->getMethod()
。 如果请求是 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');
}
});