NodeJS 如果通过React中的状态或上下文变量设置了Authorization报头,Axios将返回401

kwvwclae  于 2023-01-01  发布在  Node.js
关注(0)|答案(1)|浏览(149)

我正在使用React Native,其中axios从我的express api返回发布详细信息。我使用jwt验证用户请求。JWT令牌位于状态变量中,并传递给头授权值。但它仅在第一次加载时有效,当我尝试重新加载应用程序时,它显示[AxiosError:请求失败,状态代码401]如果我尝试向axios添加数据,它会返回网络错误。我通过Postman确认了我的API正常,它工作正常并返回数据。为了再次重新检查,我尝试硬编码为头值,它工作正常。但如果我从状态或上下文变量传递,它会抛出401错误。再次检查CORS和Express上的所有内容,它都很好。我不知道什么快来帮我。
BASE_API_URL = http://192.168.1.2:3000上述URL运行Express
状态变量不起作用

const fetchPosts = async () => {
    //console.log(userGlobalToken)
    await axios({
      method: 'GET',
      url: `${BASE_API_URL}/posts/all`,
      headers: {
        'Get-Auth': userJwtToken
      }
    })
      .then((response) => {
        setPostsData(response.data)
      })
      .catch((err) => console.log(err))
      .finally(() => {
        setPostLoading(false)
        setRefreshing(false)
      })
  }

这个很好用!

const fetchPosts = async () => {
    //console.log(userGlobalToken)
    await axios({
      method: 'GET',
      url: `${BASE_API_URL}/posts/all`,
      headers: {
        'Get-Auth': "<jwt token here>"
      }
    })
      .then((response) => {
        setPostsData(response.data)
      })
      .catch((err) => console.log(err))
      .finally(() => {
        setPostLoading(false)
        setRefreshing(false)
      })
  }

如果你仍然认为是express的问题,我检查了AJAX在正常的网络中工作正常。我控制台日志检查令牌是否存在于状态变量中,它被设置。我还检查了其他axios请求,其中未经授权抛出网络错误或404。
先谢了!

toe95027

toe950271#

401错误:您的userJwtToken已过期或无效。401是“未授权”。沿着多长时间您的认证自动代码更改?

相关问题