Laravel 8.75+Livewire 2.12跨域错误解决咨询
解决方案
方案一:修复全站重定向(推荐,彻底避免跨域)
你的.htaccess重定向规则仅对根路径生效,导致访问https://www.example.com/xxx这类子路径时不会触发重定向,页面加载后Livewire请求会直接发往https://example.com,从而引发跨域。修改规则为全站重定向:
RewriteEngine On # 强制HTTPS RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP:X-Forwarded-SSL} !on RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301] # 重定向www域名到非www RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
修改后记得清除浏览器缓存(301重定向会被浏览器缓存),再测试访问https://www.example.com的任意页面,确认都被重定向到https://example.com。
另外,检查Gandi的重定向配置是否覆盖所有路径,如果Gandi的重定向仅针对根路径,建议关闭该网页重定向,仅保留.htaccess的规则,避免冲突。
方案二:修复CORS配置(备选)
如果暂时无法实现全站重定向,需要修正CORS配置的问题:
- 修正语法错误:你的
config/cors.php中allowed_origins的第二个域名缺少闭合引号,导致配置无效:
// 错误写法 'allowed_origins' => ['https://www.example.com', 'https://example.com], // 正确写法 'allowed_origins' => ['https://www.example.com', 'https://example.com'],
- 确保CORS中间件覆盖Livewire路由:
在app/Http/Kernel.php中,将\Fruitcake\Cors\HandleCors::class中间件添加到web中间件组的最前面,确保Livewire的AJAX请求被CORS中间件处理:
protected $middlewareGroups = [ 'web' => [ \Fruitcake\Cors\HandleCors::class, // 放在最前面 \App\Http\Middleware\EncryptCookies::class, // ...其他中间件 ], ];
- 清除缓存并重启服务:
执行以下命令确保配置生效:
php artisan config:clear php artisan cache:clear # 若使用OPcache,需重启PHP服务或清除OPcache缓存
完成以上配置后,测试https://www.example.com的Livewire请求是否能正常发送。
内容的提问来源于stack exchange,提问作者Petitemo
相关产品推荐
相关产品推荐

