在 Python 中检索浏览器标头

发布于 2025-01-08 19:30:28 字数 243 浏览 4 评论 0原文

我目前正在画一个空白,如何在 Python Tornado 中获取用户的当前浏览器标头信息?例如,在 PHP 中,您可以简单地查看 $_SERVER 数据。龙卷风的替代方案是什么?

注意:如何获取客户端IP龙卷风请求?并且“请求”对我不起作用。

I'm currently drawing a blank as how to get the current browser header information for a user in Python Tornado? For example, in PHP you'd simple view the $_SERVER data. What is Tornado's alternative?

Note: How do I get the client IP of a Tornado request? and the "request" does not work for me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

始终不够 2025-01-15 19:30:28

这是基于我拥有的服务器的片段,我们在其中从请求中检索一些标头数据:

class api(tornado.web.RequestHandler):
    def initialize(self, *args, **kwargs):
        self.remote_ip = self.request.headers.get('X-Forwarded-For', self.request.headers.get('X-Real-Ip', self.request.remote_ip))
        self.using_ssl = (self.request.headers.get('X-Scheme', 'http') == 'https')
    def get(self):
        self.write("Hello " + ("s" if self.using_ssl else "") + " " + self.remote_ip)

Here's a snippet based off of a server I have where we retrieve some header data from the request:

class api(tornado.web.RequestHandler):
    def initialize(self, *args, **kwargs):
        self.remote_ip = self.request.headers.get('X-Forwarded-For', self.request.headers.get('X-Real-Ip', self.request.remote_ip))
        self.using_ssl = (self.request.headers.get('X-Scheme', 'http') == 'https')
    def get(self):
        self.write("Hello " + ("s" if self.using_ssl else "") + " " + self.remote_ip)
旧城烟雨 2025-01-15 19:30:28

您可以使用类似于 tornado/httpserver.py 的逻辑,或者仅使用 xheaders=True 创建 tornado.httpserver.HTTPServer()

# Squid uses X-Forwarded-For, others use X-Real-Ip
ip = self.headers.get("X-Forwarded-For", self.remote_ip)
ip = ip.split(',')[-1].strip()
ip = self.headers.get(
    "X-Real-Ip", ip)
if netutil.is_valid_ip(ip):
    self.remote_ip = ip
# AWS uses X-Forwarded-Proto
proto = self.headers.get(
    "X-Scheme", self.headers.get("X-Forwarded-Proto", self.protocol))
if proto in ("http", "https"):
    self.protocol = proto

You can use logic similar to tornado/httpserver.py or just create tornado.httpserver.HTTPServer() with xheaders=True.

# Squid uses X-Forwarded-For, others use X-Real-Ip
ip = self.headers.get("X-Forwarded-For", self.remote_ip)
ip = ip.split(',')[-1].strip()
ip = self.headers.get(
    "X-Real-Ip", ip)
if netutil.is_valid_ip(ip):
    self.remote_ip = ip
# AWS uses X-Forwarded-Proto
proto = self.headers.get(
    "X-Scheme", self.headers.get("X-Forwarded-Proto", self.protocol))
if proto in ("http", "https"):
    self.protocol = proto
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文