hgweb原始视图返回错误的内容类型

时间:2012-05-01 15:41:58

标签: python mercurial content-type hgweb

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

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

text/plain

一些可行的解决方案当然是

  1. 将所有文件重命名为.zone(Lame and time)
  2. Hack hgwebproxy传递if response['content-type'].split(';')[0] in ('application/octet-stream', 'text/plain'): return response (Lame and dirty)
  3. 说服hgweb使用正确的内容类型(太棒了!我希望你会帮忙)

1 个答案:

答案 0 :(得分:0)

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']