Windows 10本地主机请求ECONNREFUSED

时间:2019-03-25 07:31:09

标签: javascript php node.js windows localhost

问题:

我正在Windows 10上运行PHP脚本(使用Lumen框架),在['dell', 'co dell', 'co dell'] 上侦听请求。

  • 当我使用邮递员发送localhost:8090请求时,它返回我想要的响应。
  • 当我从终端使用GET发送请求时,我收到了所需的响应。
  • 但是当我从Javascript代码发送请求(使用Fetch或Axios)时,收到错误curl

我已经完成的工作:

我已经尝试禁用Windows防火墙和Windows 10 Defender,但是并不能解决问题。我尝试在新安装的Windows 10上执行所有这些操作,结果还是一样。

我试图允许防火墙上的端口,但仍然没有帮助。

我也尝试使用Node-Fetch和Axios,但没有帮助。

代码:

JavaScript代码:

Error: connect ECONNREFUSED 127.0.0.1:8090

用于运行Lumen应用程序的PHP终端命令:

const axios = require("axios")

console.log("Sending the request...")

axios({
    url: 'http://localhost:8090',
})
.then(res => {
    console.log("res arrived")
})
.catch(err => {
    console.log("err happened", { err })
})

console.log("Request sent")

摘要

由于我可以使用Postman和Curl获得响应,因此Lumen应用程序正在运行。只能使用Javascript不能正常工作。

2 个答案:

答案 0 :(得分:0)

Axios错误响应:

 { err:
   { Error: connect ECONNREFUSED 127.0.0.1:2233
       at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1097:14)
     errno: 'ECONNREFUSED',
     code: 'ECONNREFUSED',
     syscall: 'connect',
     address: '127.0.0.1',
     port: 22323,
     config:
      { adapter: [Function: httpAdapter],
        transformRequest: [Object],
        transformResponse: [Object],
        timeout: 0,
        xsrfCookieName: 'XSRF-TOKEN',
        xsrfHeaderName: 'X-XSRF-TOKEN',
        maxContentLength: -1,
        validateStatus: [Function: validateStatus],
        headers: [Object],
        method: 'get',
        url: 'http://localhost:22323',
        data: undefined },
     request:
      Writable {
        _writableState: [WritableState],
        writable: true,
        _events: [Object],
        _eventsCount: 2,
        _maxListeners: undefined,
        _options: [Object],
        _ended: true,
        _ending: true,
        _redirectCount: 0,
        _redirects: [],
        _requestBodyLength: 0,
        _requestBodyBuffers: [],
        _onNativeResponse: [Function],
        _currentRequest: [ClientRequest],
        _currentUrl: 'http://localhost:2233/' },
     response: undefined } }

答案 1 :(得分:0)

我不确定为什么可以解决此错误,但是请尝试让您的PHP脚本显式侦听127.0.0.1而不是localhost。这解决了您在上面遇到的问题。我的怀疑是,PHP(以及Postman,curl,浏览器等)和JS客户端对“本地主机”一词的解释不同。但是通过明确指定127.0.0.1,就不会产生歧义。

$ php -S 127.0.0.1:8090