You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel10+Inertia+Vue3跨域问题:未发送Access-Control-Allow-Origin头

Laravel 10跨域资源请求(Access-Control-Allow-Origin缺失)解决方法

1. 全局启用CORS中间件

检查app/Http/Kernel.php,将HandleCors中间件添加到全局$middleware数组(而非仅api中间件组),确保所有请求(包括静态资源请求)都经过CORS处理:

protected $middleware = [
    // ...其他已存在的中间件
    \App\Http\Middleware\HandleCors::class,
];

2. 完善CORS配置文件

打开config/cors.php,确保配置覆盖所有必要场景:

return [
    'paths' => ['*'], // 允许所有路径,或明确指定'/resources/js/*'
    'allowed_methods' => ['*'],
    'allowed_origins' => ['*'], // 或指定具体域名'sub-b.domain'
    'allowed_origins_patterns' => [],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 3600,
    'supports_credentials' => false,
];

3. 服务器层面补充CORS规则(避免Laravel中间件未触发)

如果静态资源由Web服务器直接返回(未经过Laravel路由),需要在服务器配置中添加CORS头:

  • Nginx:在站点配置中添加
location / {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods *;
    add_header Access-Control-Allow-Headers *;

    if ($request_method = OPTIONS) {
        return 204;
    }
}
  • Apache:在项目根目录的.htaccess中添加
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "*"
Header set Access-Control-Allow-Headers "*"

4. 清除缓存并重启服务

执行Laravel缓存清理命令,确保配置生效:

php artisan config:clear
php artisan cache:clear

同时重启Web服务器(Nginx/Apache)及PHP-FPM(若使用)。

5. 规范静态资源访问路径

Laravel中resources目录下的文件通常需要编译后放到public目录,建议访问编译后的资源(如https://sub-a.domain/js/app.js),而非直接请求resources目录下的源文件,这样更符合框架规范,也能确保请求经过Laravel的中间件处理。

内容的提问来源于stack exchange,提问作者Clems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:57:09