1. 程式人生 > >lumen框架解決非簡單請求 cors 跨域問題

lumen框架解決非簡單請求 cors 跨域問題

Lumen在做前後端分離專案時,在瀏覽器中訪問,若前後端域名不一致會導致跨域問題,簡單跨域好解決。若傳送的是非簡單跨域(參考文章),此時瀏覽器會先發送option請求進行預檢,預檢通過才傳送真正的請求。此時服務端要實現option請求的接收。服務端程式碼實現如下:

新增如下中介軟體:

<?php

namespace App\Http\Middleware;

use Closure;

class CrossHttp
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param
\Closure $next * @return mixed */
public function handle($request, Closure $next) { if($request->getMethod() == "OPTIONS") { $allowOrigin = [ 'http://192.168.1.47', 'http://localhost', ]; $Origin = $request
->header("Origin"); if(in_array($Origin, $allowOrigin)){ return response()->json('ok', 200, [ # 下面引數視request中header而定 'Access-Control-Allow-Origin' => $Origin, 'Access-Control-Allow-Headers' => 'x-token'
, 'Access-Control-Allow-Methods' => 'GET,POST,OPTIONS']); } else { return response()->json('fail', 405); } } $response = $next($request); $response->header('Access-Control-Allow-Origin', '*'); return $response; } }

在 boostrap/app.php 裡註冊一下全域性中介軟體即可完成

$app->middleware([
     \App\Http\Middleware\CrossHttp::class,
]);