首页 >后端开发 >php教程 >如何在 Laravel 5.1 中实现自定义 CORS 中间件?

如何在 Laravel 5.1 中实现自定义 CORS 中间件?

Patricia Arquette
Patricia Arquette原创
2024-12-22 16:21:09264浏览

How to Implement Custom CORS Middleware in Laravel 5.1?

在 Laravel 5.1 中启用 CORS

使用 Laravel 5.1 开发 API 时,启用跨域资源共享 (CORS) 对于允许请求至关重要来自不同的起源。虽然存在各种 CORS 库,但本文重点介绍专门为 Laravel 5.1 定制的自定义中间件实现。

CORS 中间件

要启用 CORS,请在以下位置创建一个中间件类app/Http/Middleware/CORS.php:

use Closure;

class CORS {
    public function handle($request, Closure $next)
    {
        header("Access-Control-Allow-Origin: *");
        $headers = [
            'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE',
            'Access-Control-Allow-Headers' => 'Content-Type, X-Auth-Token, Origin'
        ];
        if ($request->getMethod() == "OPTIONS") {
            return Response::make('OK', 200, $headers);
        }

        $response = $next($request);
        foreach ($headers as $key => $value) {
            $response->header($key, $value);
        }
        return $response;
    }
}

注册中间件

在 app/Http/Kernel.php 中注册您的中间件:

protected $routeMiddleware = [
    'cors' => 'App\Http\Middleware\CORS',
];

使用中间件

要在路由中使用 CORS 中间件,请添加 'middleware' =>; 'cors' 添加到路由定义中:

Route::get('example', ['middleware' => 'cors', function () {
    return 'example';
}]);

Laravel ^8.0 Update

在 Laravel 8.0 及以上版本中,您需要导入控制器命名空间并使用类名如下:

use App\Http\Controllers\ExampleController;

Route::get('example', [ExampleController::class, 'dummy'])->middleware('cors');

按照以下步骤,您可以轻松启用Laravel 5.1 API 中的 CORS,允许来自不同域的请求并提供安全灵活的 API 环境。

以上是如何在 Laravel 5.1 中实现自定义 CORS 中间件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn