使用axios执行GET请求时出现401错误

时间:2019-02-13 17:01:46

标签: javascript get axios http-status-code-401

我可以在浏览器中查看JSON数据,但不能在控制台中查看。我对axios不太熟悉,但是我认为问题出在URL(请参见下面的代码段)。那样的话,或者我在axios.get {中丢失了一些东西。

有什么想法吗?

server.js:

axios.get("https://handshake.[redacted].com/HandshakeWebServices/Odata/Odata.ashx/HS[redacted]?hsf=@UserName=%27[redacted]%27&$select=PreferredName,Initials,JobTitle,Office", {
    crossDomain: true,
    method: "GET",
    credentials: "include",
    mode: "no-cors",
    headers: {
        "Accept": "application/json; odata=verbose"
    }
})
.then(function(res){
  console.log(res.data);
})
.catch(function(e){
  console.log(e);
})

控制台:

GET https://handshake.[redacted].com/HandshakeWebServices/Odata/Odata.ashx/HS[redacted]?hsf=@UserName=[redacted]&$select=PreferredName...etc 401 (Unauthorized)

server.js?1d69:18 Error: Request failed with status code 401
    at createError (createError.js?2d83:16)
    at settle (settle.js?467f:18)
    at XMLHttpRequest.handleLoad (xhr.js?b50d:77)

1 个答案:

答案 0 :(得分:1)

该网站返回的401表示您无权访问该URL。

通常,这意味着您需要发送凭据。

现在,您说的是credentials: "include",,但这是fetch而非axios可以识别的属性。与axios等价的是withCredentials: true,因此应进行设置。


您还说过mode: "no-cors",,这是fetch而不是axios可以识别的另一个属性。无论如何你都不想要它。发送凭据需要通过CORS进行许可,因此通过拒绝CORS,可以拒绝获得发送凭据的许可的可能性。

删除该属性。