我正在尝试使用Flask构建一个简单的Torrent跟踪器,但我遇到了一个问题。
如果客户端在NAPT网络中,则请求中包含的端口是不正确的。我希望能够使用Flask获取客户端连接端口(在PHP中,可以使用这个函数:$_SERVER['REMOTE_PORT']
)。
如何使用Flask获取客户端端口?
request.environ
中获取它。request.environ.get('REMOTE_PORT')
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')
origin = request.environ.get('HTTP_ORIGIN') port = origin.split(":")[-1]
来获取它。