You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP32上microWebSrv2部署zepto.min.js文件传输问题求助

问题分析与解决

核心问题

你的路由代码存在两个致命问题:

  1. 无限重定向循环:路由处理函数中调用request.Response.ReturnRedirect('/zepto.min.js'),会让浏览器反复请求同一个路径,触发同一个路由处理逻辑,最终导致浏览器因超出重定向次数限制报错。
  2. 错误的响应头设置:如果你的zepto.min.js不是gzip压缩格式,设置Content-Encoding: gzip头会导致浏览器无法正确解析文件内容。

正确实现方式

根据你的文件是否为gzip压缩,选择对应的代码实现:

情况1:zepto.min.js为未压缩文件

from microWebSrv2 import WebRoute, GET

@WebRoute(GET, '/zepto.min.js')
def return_zepto(microWebSrv2, request):
    try:
        # 从ESP32文件系统读取zepto文件
        with open('zepto.min.js', 'rb') as f:
            js_content = f.read()
        # 设置正确的MIME类型
        request.Response.SetHeader('Content-Type', 'application/javascript')
        # 返回文件二进制内容
        request.Response.ReturnBytes(js_content)
    except OSError:
        # 文件不存在时返回404
        request.Response.ReturnNotFound()

情况2:zepto.min.js为gzip压缩文件(建议压缩以节省空间)

如果你的文件是gzip压缩后的(比如实际文件名为zepto.min.js.gz),需要保留Content-Encoding头:

from microWebSrv2 import WebRoute, GET

@WebRoute(GET, '/zepto.min.js')
def return_zepto(microWebSrv2, request):
    try:
        with open('zepto.min.js.gz', 'rb') as f:
            js_content = f.read()
        request.Response.SetHeader('Content-Type', 'application/javascript')
        request.Response.SetHeader('Content-Encoding', 'gzip')
        request.Response.ReturnBytes(js_content)
    except OSError:
        request.Response.ReturnNotFound()

额外检查事项

  • 确认文件存在:在ESP32的REPL中执行import os; print(os.listdir('/')),查看根目录是否有目标文件。
  • 路由无冲突:确保没有其他路由规则匹配/zepto.min.js路径。
  • 调试请求:打开浏览器开发者工具的「网络」标签,查看请求的状态码(正常应为200)和响应头是否正确。

内容的提问来源于stack exchange,提问作者mehdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:40:05