gpt4 book ai didi

python http网络服务器

转载 作者:可可西里 更新时间:2023-11-01 16:25:15 26 4
gpt4 key购买 nike

我在本地网络上为我的家人创建了一个简单的 http 服务器,当我添加一个 html 文件和 png 图片并尝试查看 HTML 文件时,我的图像无法加载。
它说:
“图片”http://...:255/header.png”无法显示,因为它包含错误。”
这是我的一些代码

        elif self.path.endswith(".bm"):   #our dynamic content
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
f= open(curdir + sep + self.path)
ren = self.render(f.read())
self.wfile.write(ren)
return
elif self.path.endswith('.png'):
print "IMAGE WANTED!"
self.send_response(200)
self.send_header('Content-type', 'image/png')
self.end_headers()
f = open(curdir + sep + self.path)
self.wfile.write(f.read())
return
elif self.path.endswith('.jpg'):
print "IMAGE WANTED!"
self.send_response(200)
self.send_header('Content-type', 'image/jpeg')
self.end_headers()
f= open(curdir + sep + self.path)
print f.read()
self.wfile.write(f.read())
return
elif self.path.endswith(".esp"):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
self.wfile.write("This Format Is Not Supported Any More, Upgrade To BM Script")
return

除了 png 和 jpeg 部分外,它们都有效。 BM脚本我自己写的,和esp一样所以没什么

最佳答案

open的默认模式是'r',代表读取文本数据,在Windows下做自动EOL转换。替换 f = open(curdir + sep + self.path); self.wfile.write(f.read())

fn = os.path.normpath(os.path.join(curdir, self.path))
if not fn.startswith(abspath + os.path.sep):
raise Exception('Path traversal attempt')
with open(fn, 'rb') as f:
self.wfile.write(f.read())

with 语句修复了文件句柄的泄漏。或者(在 Python < 2.5 上),您可以手动调用 f.close()

os.path.join (为此您可能需要在文件开头 import os.path)是一种比字符串连接更清晰的文件名构造机制。检查生成的文件名是否在您期望的目录中可以防止 path traversal vulnerability这将允许任何人读取您系统上的所有文件。

关于 python http网络服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com