如何使用Flask获取客户端的端口?

5

我正在尝试使用Flask构建一个简单的Torrent跟踪器,但我遇到了一个问题。

如果客户端在NAPT网络中,则请求中包含的端口是不正确的。我希望能够使用Flask获取客户端连接端口(在PHP中,可以使用这个函数:$_SERVER['REMOTE_PORT'])。

如何使用Flask获取客户端端口?

3个回答

5
你可以从request.environ中获取它。
request.environ.get('REMOTE_PORT')

3
如果 Flask 在反向代理的背后,
request.environ.get('REMOTE_PORT')

如果你使用的是反向代理,不会给你想要的结果,你需要获取反向代理所用的端口。

如果使用Nginx,请将以下粗体行添加到您的配置文件中:

server {
    listen 80;
    server_name _;
    location / {
        proxy_pass ...;
        <b>proxy_set_header WHATEVER $remote_port;</b>
    } 
} 

然后,您可以使用以下方式获取客户端端口:

request.headers.get('WHATEVER')

0
你可以打印(request.environ)来查看它的键。 例如,你可以通过origin = request.environ.get('HTTP_ORIGIN') port = origin.split(":")[-1]来获取它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接