我正在创建一个非常简单的
Vega
可视化查看器:它是
one file module
它提供一个只包含Vega图形和HTML5的基本HTML页面
EventSource
的更新。用户(me)通过ssh在Python shell中工作,创建一个表示查看器的对象,该对象打印其IP和端口,供用户粘贴到其(my)web浏览器中。这个HTTP服务器不提供文件或从客户端获取输入,所以我看不到任何安全问题。
我不确定的部分是如何设置
(host, port)
这样,我的web浏览器可以找到在远程Python中运行的HTTP服务器。我整个下午都在做实验,我不知道我是否误解了
假定的
或者如果我使用的服务器更改了访问策略。
下面是一个简单的示例:
import SimpleHTTPServer
import SocketServer
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer((host, port), Handler)
print(httpd.server_address)
httpd.serve_forever()
如果我在本地运行此程序并希望确保外部查看器
不能
访问它,我是否设置
host
到
"127.0.0.1"
因为这意味着客户端必须访问它
像
127.0.0.1,哪种情况只能在本地发生?在这种情况下,
port
可以是
0
获取任何开放端口。
如果我远程运行这个,想确保外部观众
可以
访问它,我是否设置
主办
到
""
或
"0.0.0.0"
因为这意味着客户端可以将其作为任何地址访问服务器?在这种情况下,我可能无法设置
港口城市
到
0
因为这些端口中的许多可能被阻塞,或者操作系统对此更聪明?
基本上,Python的SocketServer中的访问控制是如何实现的
假定的
去工作?