关于python快捷易用的http服务器模块的几个问题。
它安全吗?
只有我的局域网上的人才可以使用,对吗?如果有人输入我的公共 IP xxx.xx.xx.xxx:8000,它就不起作用了?
答案1
http 服务器(无论是 Python 还是其他 http 服务器)可以在 LAN 上运行,但无法在互联网上运行。要让它在互联网上运行,您必须设置路由器
例如 a) 您已将外部端口转发到内部 IP 和端口 8000。
b) 您已在路由器设置中将您的内部 IP 设置为 DMZ 主机。
答案2
Python simplehttpserver 或 http.server (python 3) 将监听每个接口。其他人 -> 您的路由器 -> 您的服务器。
这是可以拯救你的一点。(答案是肯定的,如果你没有端口转发和 DMZ,它将无法工作)
您的路由器有过滤器可以阻止端口。如果您希望服务器可供其他人查看,则必须手动允许端口。
您的路由器可能还有一个部分,上面写着“DMZ”或“DeMilitarizedZone”。除了端口转发(允许端口通过过滤器)之外,您还需要将自己的计算机或托管服务器的任何设备设为 DMZ。为此,只需将您的计算机 IP 放在 DMZ 中即可。
注意:如果您的计算机被设置为 DMZ,那么拥有静态 IP 可能会很方便。
此外,如果您确实不想在家门口使用互联网,请使用 host as"127.0.0.1"
而不是"0.0.0.0"
。
示例测试:
from socket import *
a = socket(AF_INET,SOCK_STREAM)
a.bind(('0.0.0.0',8000))
a.listen(1)
b,c = a.accept()
#Port tester can detect and the program receives the connection.
d = socket(AF_INET,SOCK_STREAM)
d.bind(('127.0.0.1',8000))
d.listen(1)
e,f = d.accept()
#Port tester cannot detect and the program receives no connection.