【问题标题】:hgweb raw view returns the wrong content-typehgweb 原始视图返回错误的内容类型
【发布时间】:2012-05-01 15:41:58
【问题描述】:

背景:我正在使用 https://bitbucket.org/mariocesar/django-hgwebproxy/wiki/Home 将 Mercurial 浏览器添加到我正在构建的 Django 站点。

我遇到的问题是:我们存储在 HG 存储库中的特定文件是绑定区域文件,并且恰好命名为 /some/path/somedomain.com,这导致 hgweb 将内容类型设置为 application/x-msdos-program(当返回文件的原始视图时,内容实际上是text/plain)。不正确的内容类型导致 hgwebproxy 将内容转储到页面模板中,而不是仅仅返回它。它会进行这样的测试以跳过模板:

if response['content-type'].split(';')[0] in ('application/octet-stream', 'text/plain'):
    return response

当然有一些可能的解决方案

  1. 将所有文件重命名为 .zone(蹩脚且耗时)
  2. 破解 hgwebproxy 以通过 application/x-msdos-program(蹩脚和肮脏)
  3. 说服 hgweb 使用正确的内容类型(太棒了!希望对您有所帮助)

【问题讨论】:

    标签: python mercurial content-type hgweb


    【解决方案1】:

    hgweb 使用 mimetypes 来检测文件的 mime 类型。您可以通过添加设置文件来覆盖“.com”后缀检测。见:mimetypes.knownfiles:

    >>> import mimetypes
    >>> mimetypes.init()
    >>> mimetypes.knownfiles
    ['/etc/mime.types', '/etc/httpd/mime.types', '/etc/httpd/conf/mime.types', '/etc/apache/mime.types', '/etc/apache2/mime.types', '/usr/local/etc/httpd/conf/mime.types', '/usr/local/lib/netscape/mime.types', '/usr/local/etc/httpd/conf/mime.types', '/usr/local/etc/mime.types']
    

    【讨论】:

    • 谢谢!我需要把它拿出来,所以我只修改了 /etc/mime.types。
    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多