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

Axios请求Django接口提示未提供认证凭证但Postman正常调用如何解决

后端对应的Django视图代码如下:

@api_view(['POST'])
@csrf_exempt
@permission_classes([IsAuthenticated])
def add_to_wishlist(request, id):
    product = get_object_or_404(Product, _id=id)
    if product.users_wishlist.filter(id=request.user.id).exists():
        product.users_wishlist.remove(request.user)
    else:
        product.users_wishlist.add(request.user)
    return Response('your item is add to the wishlist ')

请问这个问题该如何解决?

解决方案

问题根因

你的axios.post调用传参顺序错误,导致请求头配置没有生效。axios发送POST请求的语法是axios.post(url, 请求体数据, 配置项),你目前将配置项直接作为第二个参数传入,axios会把它识别为请求体,你配置的Authorization请求头根本没有被发送到后端,所以才会返回认证凭证未提供的错误。

修正代码

调整axios.post的参数顺序,给第二个参数传入空对象作为请求体,将config放在第三个参数位置即可:

export const addToWishlist = (id) => async (dispatch, getState) => {
    try {
        const {
            userLogin: { userInfo },
        } = getState()

        const config = {
            headers: {
                'Authorization': `JWT ${userInfo.token}`
            }
        }
        // 修正传参顺序,第二个参数为请求体,无数据时传空对象
        const { data } = await axios.post(`/api/wishlist/add_to_wishlist/${id}/`, {}, config)

        dispatch({
            type: WISHLIST_ADD_ITEM,
            payload: data
        })

        localStorage.setItem('wishlistItems', JSON.stringify(getState().wishlist.wishlistItemsFromStorage))
    } catch (error) {
        dispatch({
            type: WISHLIST_ADD_ITEM_FAIL,
            payload: error.response && error.response.data.detail
                ? error.response.data.detail
                : error.message,
        })
    }
}

验证

修改后打开浏览器开发者工具的「网络」面板,找到对应POST请求,检查请求头中是否已经携带Authorization字段,确认后请求即可正常通过认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:15:03