BaseHTTPRequestHandler
全部标签 我知道之前已经有人问过这个问题,例如这里:HowdoIserveimageContent-typeswithPythonBaseHTTPServerRequestHandlerdo_GETmethod?,但是“将文件打开模式设置为二进制”的典型答案对我不起作用。我正在使用Windows。所有对文本数据(html、js、css)的请求都得到了满足,没有任何问题。图像和字体请求未正确满足。返回的响应总是包含大约150个字节(但实际上应该是大约50k)。因此,我想基本上是空的响应,缺少图像和字体。到目前为止,我在Linux下使用相同的代码没有遇到任何问题:content=open(conte
1. BaseHTTPRequestHandler介绍BaseHTTPRequestHandler是Python中的一个基类,属于http.server模块,用于处理HTTP请求的基本功能。它提供了处理常见HTTP请求方法(如GET、POST等)的默认实现,并允许你在子类中进行定制化扩展。下面详细介绍BaseHTTPRequestHandler的主要特点和使用方法:主要特点:处理HTTP请求:BaseHTTPRequestHandler可以处理常见的HTTP请求方法,如GET、POST、HEAD、PUT等。解析HTTP请求:它能够解析HTTP请求的各个部分,包括请求行、请求头、请求体等。构造H
我正在使用BaseHTTPRequestHandler类编写脚本。在do_GET(self)方法中,我需要从HTTP请求中获取Host字段的内容。我可以通过对str(self.headers)进行正则表达式来做到这一点,就像这里建议的那样:DeterminesitedomaininBaseHTTPServer,但这有点难看,我想知道是否有更简洁的方法来做到这一点。提前致谢。 最佳答案 属性self.headers是一个类似字典的结构,所以你可以这样做:defdo_GET(self):host=self.headers.get('Ho
在BaseHTTPRequestHandler的do_POST()方法中,我可以通过属性self.headers访问POST请求的header。但我找不到用于访问消息正文的类似属性。那我该怎么做呢? 最佳答案 您可以像这样在do_POST方法中访问POST正文:对于python2content_len=int(self.headers.getheader('content-length',0))对于python3content_len=int(self.headers.get('Content-Length'))然后读取数据post
在BaseHTTPRequestHandler的do_POST()方法中,我可以通过属性self.headers访问POST请求的header。但我找不到用于访问消息正文的类似属性。那我该怎么做呢? 最佳答案 您可以像这样在do_POST方法中访问POST正文:对于python2content_len=int(self.headers.getheader('content-length',0))对于python3content_len=int(self.headers.get('Content-Length'))然后读取数据post
我正在一个单独的线程中运行我的HTTPServer(使用无法停止线程的线程模块...)并且希望在主线程也关闭时停止服务请求。Python文档指出BaseHTTPServer.HTTPServer是SocketServer.TCPServer的子类,它支持shutdown方法,但缺少在HTTPServer中。整个BaseHTTPServer模块的文档很少:( 最佳答案 另一种方法,基于http://docs.python.org/2/library/basehttpserver.html#more-examples,是:代替serve
我正在一个单独的线程中运行我的HTTPServer(使用无法停止线程的线程模块...)并且希望在主线程也关闭时停止服务请求。Python文档指出BaseHTTPServer.HTTPServer是SocketServer.TCPServer的子类,它支持shutdown方法,但缺少在HTTPServer中。整个BaseHTTPServer模块的文档很少:( 最佳答案 另一种方法,基于http://docs.python.org/2/library/basehttpserver.html#more-examples,是:代替serve
我正在尝试制作一个BaseHTTPServer程序。我更喜欢使用Python3.3或3.2。我发现文档很难理解要导入的内容,但尝试从以下位置更改导入:fromBaseHTTPServerimportBaseHTTPRequestHandler,HTTPServer到:fromhttp.serverimportBaseHTTPRequestHandler,HTTPServer然后导入工作,程序启动并等待GET请求。但是当请求到达时会引发异常:File"C:\Python33\lib\socket.py",line317,inwritereturnself._sock.send(b)Typ
我正在尝试制作一个BaseHTTPServer程序。我更喜欢使用Python3.3或3.2。我发现文档很难理解要导入的内容,但尝试从以下位置更改导入:fromBaseHTTPServerimportBaseHTTPRequestHandler,HTTPServer到:fromhttp.serverimportBaseHTTPRequestHandler,HTTPServer然后导入工作,程序启动并等待GET请求。但是当请求到达时会引发异常:File"C:\Python33\lib\socket.py",line317,inwritereturnself._sock.send(b)Typ
如何阅读原始http帖子STRING。我已经找到了几种阅读帖子的解析版本的解决方案,但是我正在处理的项目提交了一个没有标题的原始xml有效负载。因此,我试图找到一种方法来读取发布数据,而无需将其解析为键=>值数组。 最佳答案 self.rfile.read(int(self.headers.getheader('Content-Length')))将原始HTTPPOST数据作为字符串返回。分解:header“Content-Length”指定HTTPPOST数据包含多少字节。self.headers.getheader('Conte