【问题标题】:Request Authorization header not set - React/Axios未设置请求授权标头 - React/Axios
【发布时间】:2022-01-07 10:07:17
【问题描述】:

我有 jwt 用户身份验证令牌,我正在尝试为 Axios GET 请求的 Authorization 标头设置。但它没有设置。后端显示未定义,firefox 开发工具未显示为 HTTP 请求设置的任何授权标头。相同的令牌和相同的辅助函数设置 POST 请求的标头,后端正确读取。

const setAuthHeader = user => {
  return { headers: { Authorization: `Bearer ${user.token}` } }
}

GET 没有设置标题

export const getWeights = async user => {
  try {
    const resp = await axios.get(
      baseUrl,
      { userId: user.id },
      setAuthHeader(user)
    )
    return resp.data
  } catch (error) {
    console.log(`error`, error)
  }
}

POST 设置标题

export const postWeights = async (user, weight, date) => {
  try {
    const resp = await axios.post(
      baseUrl,
      { userId: user.id, weight, date },
      setAuthHeader(user)
    )
    return resp.data
  } catch (error) {
    console.log(`error`, error)
  }
}

【问题讨论】:

    标签: axios http-headers


    【解决方案1】:

    axios POSTGET 有不同的方法signatures

    axios.post(url[,data[, config]])

    axios.get(url[,config])

    因此,如果您将 GET 方法重写为以下内容

    export const getWeights = async user => {
      try {
        const resp = await axios.get(
          baseUrl,
          setAuthHeader(user)
        )
        return resp.data
      } catch (error) {
        console.log(`error`, error)
      }
    }
    

    它将解决问题。此外,如果您需要传递{ userId: user.id },您可以使用类似这样的方法

    export const getWeights = async user => {
      try {
        const resp = await axios.get(
          baseUrl,
          { params: { userId: user.id }, headers: { Authorization: `Bearer ${user.token}` }  }
        )
        return resp.data
      } catch (error) {
        console.log(`error`, error)
      }
    }
    

    这将产生一个带有查询参数的请求:http://example.com?userId=xxx

    这可能是您需要的,也可能不是,如果不查看 API,我无法判断。这取决于 API 期望在何处接收 userId 参数、查询参数、路径变量、请求正文等。

    【讨论】:

    • 天哪,真是个愚蠢的错误。我正面临这个学校项目的最后期限,我看不到房间里的大象。感谢您的帮助。 PS 我自己编写了 API,因此我可以轻松地在后端重写必要的部分以从 params 获取用户 ID。
    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 2017-08-18
    • 2022-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2021-11-21
    • 2020-11-21
    相关资源
    最近更新 更多