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

使用POST请求自定义API时出现Error 401认证错误

问题:React前端调用C# API时出现401未授权错误

我和同学正在开发一个基于React和C#的预约类Web应用大学项目。同学开发的API支持用户提交数据并存入数据库,但我在前端提交数据时触发了Error 401错误。我已经确认JWT令牌和登录时获取的一致,而且用Postman测试这个API完全正常,但浏览器里用下面的代码就是不行。我是Web开发新手,求帮忙解决。

const handleSubmit = () => {
        const data = {
            userEmail: Cookies.get('email'),
            userPhoneNumber: phone,
            town: city,
            country: country,
            street: street,
            houseNumber: houseNumber,
            postalCode: postalCode,
            businessName: jobName,
            businessIdentificationNumber: 0, 
            businessType: 0, 
            businessActivities: [
                {
                    nameOfActivity: "string", 
                    descriptionOfActivity: "string", 
                    price: 0
                }
            ],
            workingDays: Object.values(workingDays),
            startingHours: Object.values(workingHours).map(hours => hours.open),
            endingHours: Object.values(workingHours).map(hours => hours.close)
        };
    
        fetch('http://localhost:8000/api/business/register', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Authorization': 'Bearer ' + jwt
            },
            body: JSON.stringify(data),
        })
        .then(response => {
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
            return response.json();
        })
        .then(data => {
            console.log('Success:', data);
        })
        .catch((error) => {
            console.error('Error:', error);
        });
    };

排查解决建议

  • 验证JWT令牌有效性:在fetch调用前添加console.log('当前JWT:', jwt),确认令牌不是空值、没有多余空格,格式完全是Bearer 令牌字符串的形式。
  • 检查CORS配置:浏览器受跨域规则限制,Postman不受。和同学确认后端CORS是否允许携带Authorization请求头,是否正确配置了允许的前端Origin地址。
  • 确认令牌未过期:登录获取的令牌可能有有效期,对比Postman使用的令牌和前端存储的令牌的exp(过期时间)字段,看是否已经失效。
  • 核对用户身份匹配:确保前端使用的JWT令牌对应的用户,和Cookies.get('email')获取的邮箱是同一用户,避免令牌和提交数据的用户不匹配。
  • 检查后端认证逻辑:和同学确认后端的JWT验证规则,比如是否要求令牌包含特定的Claim(如用户角色、ID),Postman测试的令牌可能满足要求,但前端的令牌缺少必要信息。

内容的提问来源于stack exchange,提问作者Frane Krapić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:22:26