Lumen7.x使用笔记(十一)跨域处理

384 次浏览次阅读
没有评论

Lumen7.x 使用笔记(十一)跨域处理

1. 在 app\Http\Middleware 目录下新建 EnableCrossRequest.php 中间件
<?php
namespace App\Http\Middleware;

use Closure;

class EnableCrossRequest
{
    /**
     * Handle an incoming request.
     *
     * @param $request
     * @param Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {$response = $next($request);
        $origin = $request->server('HTTP_ORIGIN') ?: '';
        // 验证当前域名是否在白名单中
        // $allowOrigins = env('FARM_ALLOW_ORIGIN');
        // if (!empty($allowOrigins)) {//     $allowOrigins = array_unique(array_filter(explode(',', trim($allowOrigins))));
        //     // 配置了 env 多个以, 风格 且 当前域名不在白名单中 则 不再添加头信息
        //     if (!empty($allowOrigins) && in_array($origin, $allowOrigins, true)) {
        //         return $response;
        //     }
        // }
        $response->header('Access-Control-Allow-Origin', $origin);
        $response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization');
        $response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
        $response->header('Access-Control-Allow-Credentials', 'true');
        return $response;
    }
}

2. 修改 app\bootstrap.php 文件添加一下代码

$app->middleware([
    // App\Http\Middleware\ExampleMiddleware::class
    App\Http\Middleware\CustomFormat::class,
    App\Http\Middleware\EnableCrossRequest::class  // 跨域处理中间件
]);
正文完
 0
评论(没有评论)