【问题标题】:why I m getting TypeError: Failed to fetch?为什么我收到 TypeError: Failed to fetch?
【发布时间】:2020-09-18 08:53:36
【问题描述】:

我在尝试从 react 应用程序发送数据时收到错误类型。

请注意,我正在使用内核。 它在客户端的本地主机上运行良好,而不是在在线托管时运行良好。

注意:当像这样使用邮递员时,我会从 json 得到结果:

{
"success":"true",
"ID":"token"
}

这是expressjs中的后端代码源:


router.post("/sickers/user/login/", cors(), (req, res) => {

    var values = req.body;
    var pass = values.password;
    var email = values.email;
    if (pass !== null || pass !== "") {
        try {

            con.query("SELECT Password ,ID FROM `sickers` WHERE Email='" + email + "'", function(err, rows, field) {
                if (err) {
                    console.log(err);
                    res.send("an error detected try later");
                } else {
                    try {
                        if (pass == rows[0].Password) {
                            //create the signed function
                            jwt.sign(rows[0].ID, "secretkey", (err, token) => {
                                    res.json({ success: "true", ID: token })
                                })
                                //session.session( )
                        } else {
                            res.json({ success: "false" });
                        }
                    } catch {
                        res.json({ success: "false" });
                    }

                }
            });
        } catch (e) {
            res.json({ success: "false" });
        }
    }
});

客户端方法是:


//submit values
const submithandler=async (e)=> {
   e.preventDefault();
     try{
         console.log('start')
            await fetch('url/api/sickers/user/login/',{
                      method:'post',
                      headers:{
                             'Accept': 'application/json',
                              'Content-Type': 'application/json',
                               },
                         body:JSON.stringify({
                                     password:password,
                                     email:email
                                            })
                               })
                                  .then(response => 
                                    {
                                console.log("response");
                            response.json().then(data => 
                                {
                                    console.log(data);
                               if(data.success=="true")
                                {
                            sessionStorage.setItem('ID',data.ID);
                            window.location.reload();
                            seterr("");
                                 }
                        else
                                 {
                                  seterr("try again");
                                 }
                             });
                          });
                 }
                 catch(e)
                 {
                   console.log(e)
                 }
}


我错过了什么吗?

提前致谢。

【问题讨论】:

  • 你能在服务器上添加你的CORS配置吗?在 localhost 上,两个应用程序都通过相同的 DNS (localhost) 进行通信,但如果托管在某种类型的云网络上,如果配置不正确,它们可能位于不同的域上,从而导致 CORS 问题
  • 感谢回复,我会尝试添加权限,我认为这正是问题所在,因为我在我的根目录下没有找到.htaccess文件或者它被隐藏了。
  • 我在 .htaccess 文件中添加了两行用于允许标题,但我注意到我仍然有同样的问题。

标签: node.js reactjs api express cors


【解决方案1】:

我之前通过将核心添加到服务器上的 .htaccess 或将整个项目的后端和前端托管到同一台服务器中解决了这个问题。

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 2018-01-05
    • 1970-01-01
    • 2018-04-03
    • 2020-07-10
    • 2020-07-19
    • 2019-12-20
    • 1970-01-01
    • 2017-08-02
    相关资源
    最近更新 更多