【问题标题】:How to use basic auth with axios nuxt module如何在 axios nuxt 模块中使用基本身份验证
【发布时间】:2020-10-31 03:51:33
【问题描述】:

我目前正在努力使用 Nuxt 的 Axios 模块:https://axios.nuxtjs.org/。 我想从必须使用基本身份验证的特定端点获取一些数据。

通常,使用 Axios,我会执行以下操作:

await axios.get(
  'http://endpoint',
  {},
  {
    withCredentials: true,
    auth: {
      username: 'userame',
      password: 'pw'
    }
  }
)

不幸的是,有了 Nuxt 的 Axios 模块,似乎并不那么容易...... 我试过类似的东西:

const data = await this.$axios.$get(
  'http://endpoint',
  {},
  {
    credentials: true,
    auth: {
      username: 'user',
      password: 'pw'
    }
  }
)

但这给我留下了401 Unauthorized...

我在这里错过了什么?

【问题讨论】:

  • 是错字还是在您的 nuxt axios 调用中您使用credentials:true 而不是withCredentials:true
  • 不,那是(奇怪)你必须如何使用 nuxt 模块 (axios.nuxtjs.org/options.html#credentials) 编写它。这将设置withCredentials。 ????‍♂️

标签: javascript axios nuxt.js basic-authentication


【解决方案1】:

axios.get()(和$axios.$get())的第二个参数是Axios 配置,但您已将它作为第三个参数传递(实际上被忽略了)。 API 可能会省略来自 axios.get() 的数据参数,因为数据不适用于此上下文。

解决方案是用您的配置替换第二个参数:

const data = await this.$axios.$get(
  'http://endpoint',
  // {},          // <-- Remove this! 2nd argument is for config
  {
    credentials: true,
    auth: {
      username: 'user',
      password: 'pw'
    }
  }
)

【讨论】:

  • 感谢您的回答。我一开始就这样,但在某处读到,第二个参数(配置)必须被传递,并且身份验证不是该配置的一部分。不过,这很可能是一个错误。无论如何,我回到了你建议的代码,但我仍然会得到一个 401 ......我现在想消除为我提供了错误的密码/用户或后端有另一个问题的可能性。我会尝试找到一个基本的身份验证测试 API,我可以用它来发出一些虚拟请求,以确保我的 axios 代码是正确的......
  • 无论如何:请求时我收到此错误:401,但也因 CORS 而被阻止。负责后端的人告诉我,添加了一个Allow Origin: * 标头以允许我的请求。所以我有点困惑,难道这真的是一个CORS问题吗?你有什么意见? (参见浏览器网络检查员的图片)ibb.co/k8vDR87(哦,非常感谢!)编辑:我认为这确实是 CORS 的问题,因为在使用我的失眠应用程序进行测试时,我没有看到承诺的响应标题...我会继续挖掘....
猜你喜欢
  • 2020-09-02
  • 2017-10-19
  • 2019-09-02
  • 2021-06-24
  • 2020-04-30
  • 2017-06-18
  • 2018-07-19
  • 2021-08-26
  • 2017-11-02
相关资源
最近更新 更多