React中如何使用带身份验证的axios PUT方法,返回401怎么解决?
问题排查与解决方案
1. 核心错误:Authorization头格式不符合要求
gorest接口要求身份验证头必须携带Bearer 前缀,你当前直接填写令牌字符串的写法不符合规范,这是触发401的最常见原因。
正确的头格式为:Authorization: Bearer 你的实际令牌
2. 其他可能导致401的问题
- 请求体字段不匹配:gorest的用户更新接口没有
body参数,需要传入的有效字段为name、gender、email、status,无效字段不会直接导致401但会触发参数错误,建议优先修正参数。 - 操作的用户不属于当前令牌:你调用的用户ID为6的账号属于公共接口预设的其他用户,你只能修改自己用当前令牌创建的用户,操作他人账号会触发权限不足。
- 令牌有效性问题:检查令牌是否过期、复制时是否遗漏字符或带入多余空格。
修正后的代码示例
const [data, setData] = useState(null); useEffect(() => { axios .put( "https://gorest.co.in/public/v1/users/你自己创建的用户ID", { name: "Test", email: "test@example.com", // 必须传符合格式的未占用邮箱 gender: "male", status: "active" }, { headers: { Authorization: "Bearer 你的实际令牌", // 注意Bearer前缀和后面的空格不能省略 }, } ) .then((response) => { setData(response.data); }) .catch(err => console.log(err.response.data)); // 新增错误捕获,可打印接口返回的具体报错信息 }, []);
内容的提问来源于stack exchange,提问作者ahmedskulj10
相关产品推荐
相关产品推荐

