【问题标题】:Authorization header is stripped down in put request from browser but working fine in Postman授权标头在来自浏览器的 put 请求中被剥离,但在 Postman 中工作正常
【发布时间】:2026-01-10 06:50:02
【问题描述】:

我的授权令牌从浏览器(使用 axios 的 reactjs)到 Django 服务器的请求中被剥离,因此得到 401(未授权),但同样的请求与邮递员一起工作正常。请求代码

const config = {
        headers:{
           'Content-Type': 'application/json',
           'Authorization': `Token ${localStorage.token}`
        }
     }
    console.log(config.headers.Authorization)
    console.log(localStorage.token)

    axios.put('http://localhost:8000/user-registration/', config).then(
         res => {
            console.log(res.status)
         } 
      )
}

Djnago 方法

class UserRegistrationEvent(APIView):
permission_classes = (IsAuthenticated,) 
authentication_classes = (TokenAuthentication, ) 
def get_object(self, username):
    try:
        return User.objects.get(username = username)
    except MyUser.DoesNotExist:
        raise Http404

def put(self, request, format=None):
    print(request.headers)
    User       = self.get_object(request.user)
    serializer = UserRegistrationEventSerializer(User, data=request.headers)
    if serializer.is_valid():
        serializer.save()
        return Response({'alert': 'registration successful'})
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

正如我使用打印方法找出标题的方法一样(为了调试,我删除了权限类)。 CORS 设置不是问题

【问题讨论】:

    标签: django reactjs authorization httprequest


    【解决方案1】:

    将选项/配置作为第三个参数传递给axios.put。第二个参数是数据/有效负载

    喜欢这个

    axios.put('http://localhost:8000/user-registration/', {}, config).then(
             res => {
                console.log(res.status)
             } 
          )
    

    【讨论】:

      最近更新 更多