繁体   English   中英

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

[英]Python Flask, how to set 'Content-Type' for static files (js)?

对于我的 Flask 应用程序,我使用“windows-1251”编码。 要绘制模板,我将“内容类型”设置如下:

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' 'Content-Type=application/x-javascript; charset=windows-1251'用于所有静态文件? (PS:我不想提前手动转换成UTF-8,这个方法不适合我)

您的静态文件不应由Web服务器提供,而应由开发人员提供,因此转换文件编码是正确的方法。

如果您不首先转换文件的原因是由于体积原因,请参阅如何在Python中将文件转换为utf-8? 看看如何使其自动化。

这就是我如何能够在开发服务器上为静态文件夹中具有自定义扩展名的所有文件提供自定义MIME 类型

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 服务器,它显然由在 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 有一种更温和的方式来设置 MIME 类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM