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

Django Rest Framework PUT请求无法获取HTTP_AUTHORIZATION问题

Django Rest Framework中PUT请求无法传递JWT Token问题

问题现象

使用Django Rest Framework搭建后端,前端React通过Axios发送JWT Token做身份验证时,GET、POST请求能正常传递Token,但PUT请求里Token无法被后端接收,Django验证函数中request.META不存在HTTP_AUTHORIZATION字段。

相关配置

CORS已允许PUT方法:

CORS_ALLOW_METHODS = (
    "DELETE",
    "GET",
    "POST",
    "PUT",
)

前端Axios调用代码(原错误代码)

已确认Token有效,并非undefined:

try {
    console.log("Ejecutando caso Exitoso");
    const response = await axios.put("http://localhost:8000/empresas/empresa-persona/" + param[1], {
        headers: {
            Authorization: `Bearer ${localStorage.getItem("token")}`,
            'Content-Type': 'application/json',
        },
    });
    console.log(response);
} catch (error) {
    console.log(error);
}

后端Django验证函数

该函数在GET、POST请求中正常工作,但PUT请求取不到HTTP_AUTHORIZATION:

def user_call_validation(request, perm):
    # Control de Acceso
    print(request.META)
    user = validate_user_token(token=request.META["HTTP_AUTHORIZATION"])
    
    # print(User.objects.get(id=user["id"]).get_all_permissions())
    if User.objects.get(id=user["id"]).has_perm(perm) != True:
        raise Exception("Acceso denegado!")

问题原因及解决方案

核心问题:Axios PUT方法参数顺序错误

Axios的put方法签名为axios.put(url[, data[, config]]),第二个参数是请求体数据,第三个参数才是包含headers的配置对象。原代码把headers放在了第二个参数(data位置),导致headers未被正确设置,Token无法传递到后端。

修改后的Axios代码

如果PUT请求不需要发送请求体数据,第二个参数传空对象或null,将headers移至第三个参数:

try {
    console.log("Ejecutando caso Exitoso");
    const response = await axios.put(
        "http://localhost:8000/empresas/empresa-persona/" + param[1],
        {}, // 空请求体,可根据实际需求调整
        {
            headers: {
                Authorization: `Bearer ${localStorage.getItem("token")}`,
                'Content-Type': 'application/json',
            },
        }
    );
    console.log(response);
} catch (error) {
    console.log(error);
}

验证修改

修改后重新发送PUT请求,后端request.META中即可正常获取HTTP_AUTHORIZATION字段,验证函数可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:32:56