[英]How to allow or deny remote connections in Python's SocketServer?
我正在創建一個非常簡單的Vega可視化查看器:這是一個文件模塊 ,可提供基本HTML頁面,該頁面僅包含Vega圖形和更新的HTML5 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
以獲取任何打開的端口。
如果我正在遠程運行此服務器,以確保外部查看者可以訪問它,請將host
設置為""
還是"0.0.0.0"
因為這意味着客戶端可以將其作為訪問服務器的任何地址來訪問? 在這種情況下,我可能無法將port
設置為0
因為其中許多端口可能被阻止了,或者操作系統對此是否更聰明?
基本上,Python的SocketServer中的訪問控制應該如何工作?
這是基本的TCP。 與Python無關。
如果您收聽127.0.0.1,則只能在同一主機上運行的客戶端可以連接。
如果您收聽0.0.0.0,那么在防火牆允許的情況下,任何人都可以連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.