Skip to main content
 首页 » 编程设计

Python Flask,如何为静态文件(js)设置 'Content-Type'

2025年05月04日13Free-Thinker

对于我的 Flask 应用程序,我使用“windows-1251”编码。为了绘制模板,我按如下方式设置“Content-Type”:

from flask.helpers import make_response 
 
def render_tmpl_dummy(): 
    response = make_response("Some Russian text here") 
    response.headers['Content-Type'] = 'text/html; charset=windows-1251' 
    return response 

这里一切都很好。但我的静态 js 文件也在“windows-1251”中。那么,有什么方法可以设置 'Content-Type=application/x-javascript; charset=windows-1251' 用于所有静态文件? (PS:我不想提前手动转成UTF-8,这种方法不适合我)

请您参考如下方法:

这就是我能够为所有文件提供自定义 extension 的方式在静态文件夹中自定义 MIME type在开发服务器上:

if __name__ == '__main__': 
 
    CUSTOM_FILE_EXTENSION = '.jsonl' 
    CUSTOM_MIME_TYPE = 'application/jsonl+json' 
 
    @flask_app.route(flask_app.static_url_path + '/' + '<path:path>' + CUSTOM_FILE_EXTENSION) 
    def jsonl_mime_type(path): 
        return flask.send_from_directory( 
            directory=flask_app.static_folder, 
            path=path + CUSTOM_FILE_EXTENSION, 
            mimetype=CUSTOM_MIME_TYPE 
        ) 

实际上,我只是重新发明了 Flask 静态 Web 服务器,它显然由一个 single call 组成。在 Flask 构造函数中添加 add_url_rule():

        self.add_url_rule( 
            f"{self.static_url_path}/<path:filename>", 
            endpoint="static", 
            host=static_host, 
            view_func=lambda **kw: self_ref().send_static_file(**kw), 
        ) 

我遇到了所有这些麻烦,所以开发服务器的行为更像生产,其中 Apache 有一个 gentler设置 MIME 类型的方法。