【HTTP】401未经授权的错误及其通常解决方案

今天早上写api自动化测试的时候报了一个错误:
Fatal: UncaughtException: AssertionError: expected { Object (_events, _eventsCount, …) } to have status code 200 but got 401

与之有关的代码块具体如下:

it("GET /users with admin", function (done) {
    chai.request(server)
      .get("/users")
      .set("user", encodeURI(JSON.stringify(user)))
      .end((err, res) => {
        expect(err).to.be.null
        expect(res).to.have.status(200)
        done()
      })
  })

然后他把错的意思也非常明显,就是说你应该返回200状态码的,但是我在测试的时候却返回了401,我们知道,以数字4开头的错误或状态代码通常表示客户端错误。 换句话说,问题与客户端请求有关,或者直接由客户端本身引起,且401具体是和身份认证有关,那么我们很好推理这次的错误存在就是我们想要验证admin身份时出现了问题。那么有什么解决的思路呢,我在网上查到了如下几种思路:
(1)在某些情况下,您可以在浏览器中手动输入一个URL(统一资源定位符),或者您已为书签添加了过时的URL,因此您可以使用该URL。 这是常见错误,可以通过检查拼写错误或检查URL是否仍然可行来解决。
(2)您会惊讶于错别字是我们401问题背后的最常见原因。 可以使用以下工具来避免凭据中的拼写错误: Dashlane –您无需在每次登录时都重新输入凭据。
(3)如今,再也没有人能够清除浏览历史记录或Cookie。 除了随着时间的推移收集大量数字垃圾外,这种习惯还可能在您尝试登录到您喜欢的任何网站时导致401错误问题。事实是cookie是存储您的一些个人信息的摘要,包括登录信息。 他们可以提醒网站您是谁,但有时无法正常工作。如果您收到401,但确定不是错字,请尝试清除浏览历史记录,Cookie和缓存,然后重试。 这是您可以执行的操作。
(4)造成401错误的另一个原因可能是DNS(域名系统)服务器问题。 幸运的是,这个问题很容易解决。
·对于Windows OS用户–以管理员身份登录到您的计算机。 在搜索栏中键入“ CMD”以打开命令提示符。 在命令提示符中,键入以下“ ipconfig / flushdns”,然后按Enter。
·对于Mac OS用户–按下Command和空格键以打开Spotlight搜索。 在那里,输入“ Terminal”。 在命令界面中,键入以下内容:sudo killall -HUP mDNSResponder“。

然后我再仔细看了看我上面写的那块代码,嗯……我为什么再验证admin用户的时候把名字写成user了呢???

   .set("user", encodeURI(JSON.stringify(user)))	//脑子犯抽
   .set("user", encodeURI(JSON.stringify(admin)))	//正确写法

原来就是早上刚工作的时候脑子犯抽想要改下面的一个名称结果看错代码块把上面的这一个地方给改了,真是哭笑不得。所以说诸如此类拼写/看走眼等看似不起眼的与技术无关紧要小问题反而有时候能够酿成大祸,造成的后果也由于不易发现而变得严重,所以无论是写代码还是做其他工作,严谨小心永远是个好的工作品质。

你可能感兴趣的:(#,Http)