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

如何在C# WebApi/React项目中配置CORS响应头解决跨域错误?

跨域问题排查与修复方案

1. 修复后端CORS配置的语法错误

你的Program.cs里app.UseCors("AllowAll)");存在语法错误——参数里多了一个右引号,导致CORS策略无法正确加载。同时要确保CORS中间件的顺序正确,必须放在UseRouting之后、UseAuthorization之前。

修正后的Program.cs代码:

builder.Services.AddCors(
    builder => {
        builder.AddPolicy("AllowAll",
            policy => policy
                .AllowAnyHeader()   
                .AllowAnyMethod()
                .AllowAnyOrigin()
        );
    }
);

// 确保中间件顺序正确
app.UseRouting();
app.UseCors("AllowAll"); // 修正引号错误
app.UseAuthorization();

app.MapControllers();

2. 修复React端异步调用的逻辑错误

你的Games组件里直接把异步函数GameService.getAll赋值给了状态,没有实际调用它,而且setState是异步操作,直接console.log无法获取更新后的状态值。

修正后的Games组件代码:

import { useEffect, useState } from "react"
import GameService from '../Services/GameService';

const Games = () => {
    const [games, setGames] = useState([]);

    useEffect(() => {
        // 异步调用接口,用async/await处理
        const fetchGames = async () => {
            try {
                const gameData = await GameService.getAll();
                setGames(gameData);
                console.log(gameData); // 直接打印返回的数据
            } catch (error) {
                console.error('获取游戏列表失败:', error);
            }
        };

        fetchGames();
    }, [])

    return (
        // 这里可以添加渲染games的逻辑,示例:
        <div>
            {games.map(game => (
                <div key={game.id}>{game.title}</div>
            ))}
        </div>
    )
}

export default Games;

3. 额外检查项

  • 确认WebApi的端口5137是否和实际运行的后端端口一致
  • 检查后端的Game控制器是否正确标注了[ApiController]和[Route("Game")]属性,确保接口路径匹配
  • 如果浏览器仍报CORS错误,清空浏览器缓存后重试,或用隐身模式测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:15:28