发布请求Axios:网络错误

时间:2018-03-06 14:01:15

标签: node.js express axios

我使用NodeJS作为后端,使用ReactJS作为前端。

我对请求Axios网络有疑问。我的所有Get请求都有效。但邮政要求不起作用。我有这个错误"网络错误"

我创建了一个简单的网络服务来向您展示我的问题:

//Serveur code

helloWs : (request:Express.Request, response:Express.Response) => {
        try {
            response.send('hello WS !')
        } catch (error) {
            console.error(error)
            response.send('error' + error + 'status : ' + error.response.status)     
            response.end()    
        }
    }

//Here I create my root 
router.post('/helloWs',DocumentController.helloWs)

//This is my front

 axios.post('http://localhost:9000/1/documents/helloWs', { 
 }) .catch(function (error) {
                if (error.response) {
                    console.log('Error data : ', error.response.data);
                    console.log('Error status : ', error.response.status);
                    console.log('Error headers : ', error.response.headers);
                } else if (error.request) {
                    console.log('Error request : ', error.request);
                } else {
                    console.log('Error message : ', error.message);
                }
                console.log(error.config);
            })

在导航器控制台中,我只是network error,而我的网络服务是在OPTION中而不是在" POST"

我试图在axios中添加标题,但它不起作用。我指定我已经和邮递员一起测试了,没关系。 你有好主意吗 ? 谢谢

3 个答案:

答案 0 :(得分:3)

正如评论中所建议的那样,很可能是与cors相关的错误,OPTION请求是在实际请求之前由浏览器发出的,以检查您的域是否有权访问该资源。

邮递员没有做预检请求,这就是你得到答复的原因。

尝试在定义路由之前在服务器端代码中添加此中间件

app.use(function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        next();
});

答案 1 :(得分:0)

我遇到了一个几乎无法调试的类似错误。结果是我的后端不是 https 而我的前端是。通过使我的后端 https 修复它,我不再收到错误!

答案 2 :(得分:0)

我发现这个错误发生在我的设置中。出于某种原因,在 POST 请求前加上 http://(这是本地主机上的开发服务器)再次启用了网络。

我还没有深入研究 axios 文档,但我猜有一些代码会自动在 GET 请求前加上 http://,但对于 POST 方法却没有这样做?这是解释这种奇怪行为的一种可能性。