使用fetch或axios发送身份验证标头

时间:2018-04-27 13:28:04

标签: javascript node.js reactjs fetch axios

如何使用fetchaxios发送身份验证标头?

我试过这样做但是在我的客户端没有任何具有Authentification价值的标题。

这是我的代码示例。



let myHeaders = new Headers();
myHeaders.append("Authorization", token);
myHeaders.append("Access-Control-Allow-Origin", "*");
myHeaders.append("Access-Control-Allow-Origin", "*");

let req = {
        method: "GET",
        headers: myHeaders,
        mode: "no-cors",
        credentials: "same-origin",
    }
    fetch('http://localhost:5000/secret', req)
        .then(res => console.log(res))
        .catch(err => console.log(err))




我尝试在我的node.js代码上查看它。



router.route("/").get(passportJWT, SecretController.secret);




1 个答案:

答案 0 :(得分:1)

两个来源被认为是“相同的”,他们必须分享:

  • Scheme(例如https)
  • 主机名
  • 端口

您正在http://localhost:3000http://localhost:5000发出请求,因此正在提出跨域请求。

credentials: "same-origin"

...但您已将凭据(例如Authorization)限制为同源请求。

mode: "no-cors",

要发送包含跨域请求的凭据,您必须通过CORS获得权限。

您不能设置no-cors

你需要

mode: "cors",
credentials: "include"