elevationdigital / laravel-cors
在您的 Laravel 应用程序中添加 CORS (跨源资源共享) 头支持
Requires
- php: >=7
- asm89/stack-cors: ^1.3
- illuminate/support: ^5.5|^6.0|^7.0
- symfony/http-foundation: ^3.3|^4|^5.0
- symfony/http-kernel: ^3.3|^4|^5.0
Requires (Dev)
- laravel/framework: ^5.5|^6.0|^7.0
- orchestra/testbench: ^3.5|^4.0|^5.0
- phpro/grumphp: ^0.16|^0.17
- phpunit/phpunit: ^6.0|^7.0|^8.0
- squizlabs/php_codesniffer: ^3.5
- dev-master / 1.0.x-dev
- v1.0.3
- v1.0.2
- v1.0.1
- 0.11.x-dev
- v0.11.4
- v0.11.3
- v0.11.2
- v0.11.1
- v0.11.0
- v0.10.1
- v0.10.0
- v0.9.3
- v0.9.2
- v0.9.1
- v0.9.0
- v0.8.6
- v0.8.5
- V0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.0
- v0.5.0
- v0.4.0
- 0.3.x-dev
- v0.3.0
- 0.2.x-dev
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.2
- v0.1.1
- v0.1
- dev-v1-backport
- dev-feat-groupmiddleware
This package is not auto-updated.
Last update: 2024-09-25 17:54:08 UTC
README
基于 https://github.com/asm89/stack-cors
关于
laravel-cors
包允许您通过 Laravel 中间件配置发送 跨源资源共享 头。
如果您想了解 CORS 工作流程的全貌,可以浏览此 图片。
从 0.x 版本升级
从 0.x 版本升级时,有一些破坏性变更
- 供应商名称已更改(见安装/使用说明)
- 不再支持中间件分组。
- 使用新的 'paths' 属性来启用/禁用特定路由上的 CORS。默认为空!
功能
- 处理 CORS 预检 OPTIONS 请求
- 向您的响应中添加 CORS 头
- 匹配路由,只为特定请求添加 CORS
安装
在您的 composer.json
中要求 fruitcake/laravel-cors
包并更新您的依赖项
composer require fruitcake/laravel-cors
全局使用
要允许所有路由的 CORS,请将 HandleCors
中间件添加到 app/Http/Kernel.php
类的 $middleware
属性中
protected $middleware = [ // ... \Fruitcake\Cors\HandleCors::class, ];
现在更新配置以定义您要运行 CORS 服务的路径(见下文配置)
'paths' => ['api/*'],
配置
默认设置在 config/cors.php
中。发布配置以将文件复制到您的配置中
php artisan vendor:publish --tag="cors"
注意:当使用自定义头,如
X-Auth-Token
或X-Requested-With
时,您必须将allowed_headers
设置为包含这些头。您也可以将其设置为['*']
以允许所有自定义头。
注意:如果您明确列出白名单头,则必须包含
Origin
或请求将无法被识别为 CORS。
<?php return [ /* * You can enable CORS for 1 or multiple paths. * Example: ['api/*'] */ 'paths' => [], /* * Matches the request method. `[*]` allows all methods. */ 'allowed_methods' => ['*'], /* * Matches the request origin. `[*]` allows all origins. */ 'allowed_origins' => ['*'], /* * Matches the request origin with, similar to `Request::is()` */ 'allowed_origins_patterns' => [], /* * Sets the Access-Control-Allow-Headers response header. `[*]` allows all headers. */ 'allowed_headers' => ['*'], /* * Sets the Access-Control-Expose-Headers response header. */ 'exposed_headers' => false, /* * Sets the Access-Control-Max-Age response header. */ 'max_age' => false, /* * Sets the Access-Control-Allow-Credentials header. */ 'supports_credentials' => false, ];
allowed_origins
、allowed_headers
和 allowed_methods
可以设置为 ['*']
以接受任何值。
注意:尽可能具体。您可以从宽松的约束开始开发,但最好尽可能严格!
注意:由于 Laravel 中的 HTTP 方法重写,允许 POST 方法也会使 API 用户能够执行 PUT 和 DELETE 请求。
Lumen
在 Laravel Lumen 中,只需手动注册 ServiceProvider
$app->register(\Fruitcake\Cors\CorsServiceProvider::class);
Lumen 的全局使用
要允许所有路由的 CORS,请将 HandleCors
中间件添加到全局中间件,并在配置中设置 paths
属性。
$app->middleware([ // ... \Fruitcake\Cors\HandleCors::class, ]);
禁用 API 的 CSRF 保护
如果可能,使用启用 CSRF 保护的不同的路由组。否则,您可以在 App\Http\Middleware\VerifyCsrfToken
中禁用某些请求的 CSRF。
protected $except = [ 'api/*' ];
许可协议
在 MIT 许可协议下发布,请参阅 LICENSE。