python-3.x - 用http.server如何访问被调用的IP地址?
问题描述
这一定很简单,但在文档中找不到任何参考,谷歌也没有帮助。在下面的例子中
from http.server import BaseHTTPRequestHandler, HTTPServer
PORT_NUMBER = 80
class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
print(self.path) # <<<<<<<< Here
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
self.wfile.write(bytes("Hello world", "utf8"))
server = HTTPServer(('', PORT_NUMBER), myHandler)
server.serve_forever()
如果我的机器有多个接口,绑定是用 0.0.0.0 完成的。如何在请求处理程序上检索收到套接字连接的 IP?
解决方案
在 的do_*
实例的方法中BaseHTTPRequestHandler
,self.request
是socket.socket
与请求关联的对象。您可以使用 获取套接字的服务器端self.request.getsockname()
,这将为您提供客户端连接的服务器 IP 和端口的元组。因此 IP 地址将是:
self.request.getsockname()[0]
推荐阅读
- javascript - A* 算法有一个奇怪的错误
- php - 从另一个页面 Laravel 打开 Modal
- ravendb - 使用列表作为条件的 Ravendb 查询
- javascript - FullCalendar 如何停止选择反向背景事件
- msbuild - 从 Teamcity 更新 appsettings.json 文件
- php - 如何在整个站点中检查 cakephp2 中的致命错误
- node.js - 如何通过 node.js 对 windows AD 用户进行身份验证?
- java - 接收大型 XML 时,agentcontext 中的 Request_Content 为空
- javascript - 使用fabricjs 1.7.7或更高版本时,克隆的fabricjs对象似乎绑定
- python - 读取 csv 文件时使用 re