从Http请求头中获取会话信息 :param headers: 字典类型的Http请求头 :return: 表示会话信息的对象,属性有: * ``user_agent`` : 用户浏览器信息。可用字段见 https://github.com/selwin/python-user-agents#usage * ``user_language`` : 用户操作系统使用的语言 * ``server_host`` : 当前会话的服务器host,包含域名和端口,端口为80时可以被省略 * ``origin`` : 当前用户的页面
(headers)
| 172 | |
| 173 | |
| 174 | def get_session_info_from_headers(headers): |
| 175 | """从Http请求头中获取会话信息 |
| 176 | |
| 177 | :param headers: 字典类型的Http请求头 |
| 178 | :return: 表示会话信息的对象,属性有: |
| 179 | |
| 180 | * ``user_agent`` : 用户浏览器信息。可用字段见 https://github.com/selwin/python-user-agents#usage |
| 181 | * ``user_language`` : 用户操作系统使用的语言 |
| 182 | * ``server_host`` : 当前会话的服务器host,包含域名和端口,端口为80时可以被省略 |
| 183 | * ``origin`` : 当前用户的页面地址. 包含 协议、主机、端口 部分. 比如 ``'http://localhost:8080'`` . |
| 184 | 可能为空,但保证当用户的页面地址不在当前服务器下(即 主机、端口部分和 ``server_host`` 不一致)时有值. |
| 185 | """ |
| 186 | ua_str = headers.get('User-Agent', '') |
| 187 | ua = user_agents.parse(ua_str) |
| 188 | user_language = headers.get('Accept-Language', '').split(',', 1)[0].split(' ', 1)[0].split(';', 1)[0] |
| 189 | server_host = headers.get('Host', '') |
| 190 | origin = headers.get('Origin', '') |
| 191 | session_info = dict(user_agent=ua, user_language=user_language, |
| 192 | server_host=server_host, origin=origin) |
| 193 | return session_info |
no test coverage detected
searching dependent graphs…