【Delphi】使用TIdHTTPServer开发HTTP服务端在Windows2008部署后,外网无法访问

使用TIdHTTPServer设置绑定参数如下:

IdHTTPServer1.Bindings.Clear;
IdHTTPServer1.DefaultPort:= 12022;
IdHTTPServer1.Bindings.Add.IP := '127.0.0.1';
IdHTTPServer1.Active := True;

使用上面的代码可以在Windows 2008 R2正常绑定端口并运行,但测试发现只能在本机使用http://127.0.0.1访问,外网使用域名或IP均返回拒绝访问或无法访问。

后面将IP改为'0.0.0.0'后,外网可以正常访问,如下:

IdHTTPServer1.Bindings.Clear;
IdHTTPServer1.DefaultPort:= 12022;
IdHTTPServer1.Bindings.Add.IP := '0.0.0.0';
IdHTTPServer1.Active := True;

实际上,在普通情况下,我们是不应该设置bindings的,除非服务器有多网卡,而要求程序只监听其中一张网卡的数据,否则,仅设置DefaultPort即可,默认监听所有网卡数据。另外部分控件有BoundIP 也是同理的。