为啥我收到 TypeError: Failed to fetch?

Posted

技术标签:

【中文标题】为啥我收到 TypeError: Failed to fetch?【英文标题】: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 文件中添加了两行用于允许标题,但我注意到我仍然有同样的问题。 【参考方案1】:

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

【讨论】:

以上是关于为啥我收到 TypeError: Failed to fetch?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到这个 TypeError?

为啥我收到 TypeError: unsupported operand type(s) for -: 'str' and 'int'

为啥我在实际工作时会收到“Fetch failed loading”?

奇偶校验 GUI 错误(getTransactions TypeError: Failed to fetch)

为啥我收到“TypeError:this.state.users.map is not a function”,用于部署的 React 应用程序的生产版本

为啥我会收到“TypeError: unsupported operand type(s) for -: 'str' and 'str'”错误?