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

VueJS中用Basic Auth访问Endpoint报401,代码是否正确?

你的VueJS请求写法不正确,这是修复方案

首先明确说:不是的,你当前传递用户名和密码的方式不符合HTTP基本认证的标准规范,这就是服务器返回401未授权错误的主要原因。

为什么你的写法不对?

你把username和password直接放在$http.get的配置对象里,Vue的$http(通常指vue-resource)并不会自动把这些参数转换成服务器能识别的认证信息,服务器无法验证你的身份,所以返回401。

正确的HTTP基本认证写法

HTTP基本认证要求将用户名和密码拼接成用户名:密码的字符串,然后用Base64编码,最后通过Authorization请求头传递给服务器。下面是调整后的代码:

created () {
  const username = 'xxxxxxx';
  const password = 'xxxxx';
  // 拼接并编码认证字符串(浏览器环境用btoa,Node.js环境用Buffer.from(`${username}:${password}`).toString('base64'))
  const authCredentials = btoa(`${username}:${password}`);

  this.$http.get(URL, {
    headers: {
      // 设置Authorization请求头
      'Authorization': `Basic ${authCredentials}`
    }
  }).then(response => {
    console.log(response);
  }).catch(error => {
    // 别忘了捕获错误,方便排查问题
    console.error('请求失败:', error);
  });
}

额外提示:如果你用的是Axios(更主流的Vue请求库)

如果你的项目用的是Axios而不是vue-resource,Axios提供了更简洁的auth配置项,它会自动帮你处理Base64编码和请求头设置:

created () {
  axios.get(URL, {
    auth: {
      username: 'xxxxxxx',
      password: 'xxxxx'
    }
  }).then(response => {
    console.log(response);
  }).catch(error => {
    console.error('请求失败:', error);
  });
}

最后排查点

如果调整后还是返回401,你需要确认:

  • 用户名和密码是否正确
  • 服务器是否确实使用HTTP基本认证(有些服务器用的是Bearer Token等其他认证方式)
  • 请求头是否被跨域策略拦截(如果是跨域请求,需要服务器允许携带Authorization头)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:08:20