就是一个很简单的 HTTP 服务器,响应任意 GET 请求,返回一个文件
服务端用 clumsy 模拟乱序环境,乱序 10%
然后在客户端抓包发现有时候服务端的 Response 没有 HTTP 头,不知道为什么……
是 python 有 bug 还是我写的代码有问题?求大佬指点
GET /122879/122879.bat HTTP/1.1 Host: 200.200.89.77:8832 User-Agent: python-requests/2.18.4 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive HTTP/1.0 200 OK Server: BaseHTTP/0.6 Python/3.7.0 Date: Fri, 03 Aug 2018 15:10:09 GMT Content-Length: 252416 Last-Modified: Thu, 14 Sep 2017 05:05:10 GMT MZ......................@............................................. .!..L.!This program cannot be run in DOS mode. $.......PE..L.....:1.................x...^......
GET /122877/122877.bat HTTP/1.1 Host: 200.200.89.77:8832 User-Agent: python-requests/2.18.4 Accept-Encoding: gzip, deflate Accept: */* Connection: keep-alive MZ......................@............................................. .!..L.!This program cannot be run in DOS mode. $.......PE..L.....:1.................x...^......
from http.server import BaseHTTPRequestHandler from http.server import HTTPServer import datetime import os import shutil # Listen Address ADDR = '' # Listen Port PORT = 8832 class WebRequestHandler(BaseHTTPRequestHandler): def do_GET(self): path = "./testb" try: f = open(path, 'rb') except IOError: self.send_error(404, "File not found") return None self.send_response(200) #self.send_header("Content-type", 'image/png') #self.send_header('Content-Disposition','attachment; filename=test.exe') fs = os.fstat(f.fileno()) self.send_header("Content-Length", str(fs[6])) self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) self.end_headers() shutil.copyfileobj(f, self.wfile) f.close() server = HTTPServer((ADDR, PORT), WebRequestHandler) print("Server start!") server.serve_forever()
1 mengzhuo 2018-08-04 08:48:23 +08:00 via iPhone ![]() 说明没走到 set header 逻辑里,需要打日志了 |
2 axisray OP 散了散了,Wireshark 有 bug,导致乱序包重组失败,实际是有 HTTP 头的 |
![]() | 3 anyele 2018-08-04 15:53:56 +08:00 via Android 首先别怀疑编程语言有 bug |
5 axisray OP |