nodejs app无法连接到REST api nodejs app

时间:2017-05-04 16:01:32

标签: node.js windows-10

我在localhost上托管了一个nodejs REST api,我有一个使用它的nodejs应用程序。这个应用程序也在localhost上运行。一切正常,但重启后,webapp再也无法连接到REST api了。我正在运行Windows 10。

我用邮递员和浏览器测试了REST API,但它确实有效。 REST api没有问题。

尝试更改端口号 - 结果相同。

我运行wireshark来查看从浏览器请求和nodejs webapp之间的区别。以下是截图。前两行是nodejs app发出请求而后两行来自浏览器。 Wireshark capture

我无法理解这里有什么问题。我尝试使用独立的nodejs脚本,但也失败了。以下是我使用的脚本。

var request = require('request');
var u = "xxx";
var p = "xxx";
var auth = "Basic " + new Buffer(u + ":" + p).toString("base64");
var username = "qqqq";
var password = "eeee";



var options = {

            url : 'http://localhost:4001/api/v1/transaction',
            headers : {
                "Authorization" : auth
            },
        };   

        console.log(options.url);

        request.get(options, function(error,response,body){
            //console.log(options);
            //console.log(response);
            console.log(response.statusCode);
            console.log(body);
            if (!error && response.statusCode == 200) {
                var userObj = JSON.parse(body);
                callback(userObj);
            } else {
                console.log("---- Error ----")
                console.log(error);             
            }
        });

1 个答案:

答案 0 :(得分:0)

我发现了问题并且我发布了答案,希望有人能发现它有用。

我的提示来自wireshark。 (问题中的屏幕截图)所有成功的请求都转到[::1]而不是localhost127.0.0.1。重新启动Windows 10计算机后,REST api nodejs应用程序实际上不再在ip v4 localhost上提供,而是在ip v6 localhost上提供服务。代码完全没有问题。

我没有在使用网络应用中的网址中使用localhost,而是将其更改为[::1],然后就开始工作了。

.....
.....    

var options = {

        //url : 'http://localhost:4001/api/v1/transaction',
        // replaced localhost with [::1]
        url : 'http://[::1]:4001/api/v1/transaction',
        headers : {
            "Authorization" : auth
        },
    };   

.....
.....