• 根据HTTP header收集客户端相关信息 --- tornado demo


    理解:当客户端访问服务器时,会给服务器发送相关信息。

    tornado程序中,可在“处理请求类”(继承自tornado.web.RequestHandler)的请求函数中使用self.request.headers获得HTTP header客户端相关信息(包括"User-Agent")

    User-Agent说明:HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。

    tornado程序:

     1 import tornado.httpserver
     2 import tornado.ioloop
     3 import tornado.options
     4 import tornado.web
     5 
     6 from tornado.options import define, options
     7 define("port", default=8000, help="run on the given port", type=int)
     8 
     9 class IndexHandler(tornado.web.RequestHandler):
    10     def get(self):
    11         self.write("hello world")
    12         print self.request.headers
    13 
    14 
    15 if __name__ == "__main__":
    16     tornado.options.parse_command_line()
    17     app = tornado.web.Application(handlers=[(r"/", IndexHandler)], debug=True)
    18     http_server = tornado.httpserver.HTTPServer(app)
    19     http_server.listen(options.port)
    20     tornado.ioloop.IOLoop.instance().start()
    View Code

    运行上面的程序后可以在浏览器中输入:http://localhost:8000访问

    访问成功后,会在tornado程序中输出

    这是因为self.request.headers返回的是一个字典类型,用键值对的方式保存客户端的信息。

    例如:

    分析其中的‘User-Agent’:

    Mozilla/5.0 : 先前用以指示与Mozilla排版引擎的兼容性

    (Windows NT 6.3; WOW64) : 浏览器所运行于的系统的详细信息

    AppleWebKit/537.36 : 浏览器所使用的平台

    (KHTML, like Gecko) : 浏览器平台的细节

    Chrome/38.0.2125.111 Safari/537.36 : 被浏览器用于指示特定的直接由浏览器提供或者通过第三方提供的可用的增强功能。

    参考资料:http://en.wikipedia.org/wiki/User_agent 英文版

                  http://zh.wikipedia.org/wiki/%E7%94%A8%E6%88%B7%E4%BB%A3%E7%90%86 中文版

  • 相关阅读:
    用Service充当Domain Object
    Scrum方法回顾
    为什么使用User Story Map
    前端状态管理之状态机
    项目进度管理注意事项
    单元测试遇到的最难的问题
    JS AMD模块的循环依赖
    jupyter notebook常用快捷键
    Jupyter-NoteBook-你应该知道的N个小技巧
    Python之配置日志的几种方式(logging模块)
  • 原文地址:https://www.cnblogs.com/mchcylh/p/4094239.html
Copyright © 2020-2023  润新知