簡體   English   中英

如何在Python的SocketServer中允許或拒絕遠程連接?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM