header('origin', '*'); // $response = $next($request); // // // 设置跨域响应头 // $response->withHeaders([ // 'Access-Control-Allow-Origin' => $origin, // 'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, OPTIONS', // 'Access-Control-Allow-Headers' => 'Content-Type, Authorization, X-Requested-With', // 'Access-Control-Allow-Credentials' => 'true', // 允许携带Cookie // 'Access-Control-Max-Age' => 86400, // 预检请求缓存时间(秒) // 'Vary' => 'Origin' // 避免缓存干扰 // ]); // // return $response; // } public function process(Request $request, callable $handler) : Response { // 如果是options请求则返回一个空响应,否则继续向洋葱芯穿越,并得到一个响应 $response = $request->method() == 'OPTIONS' ? response('') : $handler($request); // 给响应添加跨域相关的http头 $response->withHeaders([ 'Access-Control-Allow-Credentials' => 'true', 'Access-Control-Allow-Origin' => $request->header('origin', '*'), 'Access-Control-Allow-Methods' => $request->header('access-control-request-method', '*'), 'Access-Control-Allow-Headers' => $request->header('access-control-request-headers', '*'), 'Vary' => 'Origin' // 避免缓存干扰 ]); return $response; } }