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

Laravel 10与ReactJS部署后出现No 'Access-Control-Allow-Origin'跨域错误

解决Laravel 10 + React部署Windows服务器的跨域问题

先对照你给出的配置,有几个核心问题导致了CORS错误,按以下步骤逐一修复:

1. 修复.env文件的URL拼写错误

你的Laravel .env 里 FRONTEND_URL 少了一个斜杠,这会直接导致CORS配置读取无效的源地址:

# 错误配置
FRONTEND_URL=https:/webapp.mydomain.com

修改为正确格式:

FRONTEND_URL=https://webapp.mydomain.com

2. 移除web.config中的CORS自定义头,避免冲突

你同时在IIS的web.config和Laravel的CORS中间件里配置了跨域头,会导致响应头重复、预请求逻辑混乱。删掉web.config里的<httpProtocol>下CORS配置块:

<!-- 移除这段配置 -->
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="https://webapp.mydomain.com" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
            <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" />
            <add name="Access-Control-Allow-Credentials" value="true" />
  </customHeaders>
</httpProtocol>

让Laravel的CORS中间件统一处理跨域逻辑即可。

3. 确认CORS中间件的应用范围

打开app/Http/Kernel.php,检查$middleware全局中间件数组里是否包含\Illuminate\Http\Middleware\HandleCors::class,如果没有就添加进去;
如果不想全局启用,也可以在web.php里给sign-in这类非api/*路由单独绑定CORS中间件:

Route::post('/sign-in', [AuthController::class, 'signIn'])->middleware('cors');

4. 清除Laravel缓存,确保配置生效

在服务器上执行以下命令刷新配置缓存:

php artisan config:clear
php artisan cache:clear
php artisan route:clear

Windows服务器可通过命令行或部署工具执行这些命令。

5. 确保IIS正确处理OPTIONS预请求

跨域预请求用的是OPTIONS方法,需确保IIS不会拦截这个请求,可在web.config的<system.webServer>下添加:

<handlers>
  <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" responseBufferLimit="4194304" />
</handlers>

完成以上操作后,重启IIS和Laravel应用,再测试前端API调用即可解决跨域问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:23:17