离子POST请求错误,net :: ERR_CONNECTION_REFUSED

时间:2017-03-30 22:48:19

标签: android node.js cordova ionic-framework

我有一个离子应用程序,我正在尝试在我的Android设备上测试它。该应用程序在使用“离子服务”在浏览器上测试时工作,但当我运行'离子运行android'时,发布请求似乎没有到达服务器。我收到了错误

'POST http://localhost:3000/login net::ERR_CONNECTION_REFUSED'

对于我正在使用nodejs并具有访问控制的服务器..

app.use(function (req, res, next) {
  res.header('Access-Control-Allow-Credentials', true);
  res.header('Access-Control-Allow-Origin', req.headers.origin);
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header(
    'Access-Control-Allow-Headers', 
    'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
  );
  if ('OPTIONS' === req.method) {
    res.status(200).end();
  } else {
    next();
  }
});

我还安装了cordova白名单插件和元内容安全策略,如此...

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src *    'unsafe-inline'; script-src * 'unsafe-inline'; media-src *; img-src * data:;"/>

但我仍然得到同样的错误。 我也试过使用我的ip而不是localhost并得到了这个错误。

OPTIONS http://192.168.1.66:3000/login net::ERR_CONNECTION_TIMED_OUT

我跟着这个帖子.. net::ERR_CONNECTION_REFUSED ionic 建议我通过安装microsoft.aspnet.webapi.cors启用CORS ..我按照这个链接https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Cors,现在我完全迷失了。请帮助,我已经在这3天了。 我感谢你的帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

当您尝试从设备连接到localhost时,您收到了CONNECTION_REFUSED,这是有道理的 - 因为服务器进程未在设备上运行 - 它正在您的计算机上运行。

第二个示例 more 正确,因为从设备中,您正在尝试连接到您的计算机 - 但我们看到不同的错误:CONNECTION TIMEOUT

这个实际上是由于你的本地防火墙;默认情况下,您将允许从本地主机内连接到该端口 - 但是我们需要做一些魔术来允许来自世界的数据包与该服务进行通信。

您是否在* nix上运行服务器进程?还是Windows?

对于* nix

# Using firewalld (advanced wrapper around iptables)
firewall-cmd --zone=public --add-port=tcp/3000 --permanent
firewall-cmd --reload

# Using bare iptables
iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

适用于Windows

打开防火墙配置,在“入站规则”下,找到您正在运行的服务器进程的列表。

双击该条目以打开属性窗口 - 在此处单击“允许连接”和“应用”。

来自设备

尝试再次连接到计算机上的服务器进程。