我已经将节点js用作仅响应一些Json数据的服务器。



//https
var privateKey = fs.readFileSync('./ssl/key.pem').toString();
var certificate = fs.readFileSync('./ssl/cert.pem').toString();
var credentials = {key: privateKey, cert: certificate};

var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
var PORT = 18080;
var SSLPORT = 18081;

httpServer.listen(PORT, function () {
    console.log('HTTP Server is running on: http://localhost:%s', PORT);
});
httpsServer.listen(SSLPORT, function () {
    console.log('HTTPS Server is running on: https://localhost:%s', SSLPORT);
});

app.get('/listUsers', function (req, res) {

    res.header('Content-Type', 'application/json');
    res.header('Access-Control-Allow-Origin','*');

    res.send(JSON.stringify({ a: 1 ,'id':2,'title':3}))

});





我的反应代码如下:



let http_url = "https://localhost:18081/listUsers";
        fetch(http_url, init)
            .then((response) => response.json())
            .then((responseJson) => {

                this.setState({message: `${responseJson['id']} - ${responseJson['title']}`});
            })
            .catch(e => {console.log(`error ${e}`)});





通过在Chrome中输入“ https://localhost:18081/listUsers”,我可以得到真正的json响应结果,但是反应模拟器总是告诉我“反应:错误TypeError:网络请求失败”。
我认为原因可能是Node响应标头不正确。谁能给我一些建议?非常感谢!

最佳答案

您是否更改过这样的节点端代码?

res.json({ a: 1 ,'id':2,'title':3});


我认为您正在将数据作为字符串传递。要求是json

另外,如果获得成功,请先尝试使用http://,然后再尝试使用https://。

关于node.js - react :错误TypeError:网络请求失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45017678/

10-09 22:10