Search by

oh86 / laravel-cors

oh86

cors for laravel

v1.0.1 2026-10-23 07:58 UTC

This package is auto-updated.

Last update: 2026-10-23 08:51:03 UTC


README

一、安装

composer require oh86/laravel-cors

php artisan vendor:publish --provider='Oh86\LaravelCors\CorsServiceProvider'

二、配置env

# cors
# 域名支持精准配置,也支持正则表达式(需要携带分割符)配置
CORS_ALLOWED_ORIGINS='http://a.laravel8.local,#http://.*\.laravel8\.local$#'
CORS_ALLOWED_CREDENTIALS=true
CORS_MAX_AGE=7200

config/cors.php 中的 allowed_origins 支持混合配置完整 Origin 和带分隔符的 PHP 正则表达式。建议使用 ^、$ 限定整个 Origin:

'allowed_origins' => [
    'https://example.com',
    '#^https://[a-z0-9-]+\.example\.com$#',
],

三、使用示例

use Oh86\LaravelCors\Middlewares\EnableCors;

// 注意:建议手动添加options方法,有可能会触发preflight预检请求
// 如果使用options方法请求,而路由没有注册该方法,laravel的响应会提示错误(Allow响应头提示允许的请求方法)(比如:status:200,响应头Allow: GET,HEAD)
Route::match(['get', 'options'], 'cors/demo1', [CorsController::class, 'demo1'])->middleware(EnableCors::class);

// any会给路由注册所有方法,包括options
Route::any('cors/demo2', [CorsController::class, 'demo2'])->middleware(EnableCors::class);

四、注意

为了让EnableCors中间件能优先运行,建议提高它的优先级

app/Http/Kernel.php

class Kernel extends HttpKernel
{
    protected $middlewarePriority = [
        \Oh86\LaravelCors\Middlewares\EnableCors::class,  // 放在业务处理中间件前面(或者无脑放到第一位也可以)
        // 
        // ...
    ];
}