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

作者: 太阳上的雨天 分类: Lumen7.x使用教程,PHP 发布时间: 2020-10-02 15:48

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  // 跨域处理中间件
]);

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注