hgweb raw view返回错误的contentyp

2024-04-25 09:57:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我遇到的问题是:我们存储在HG repo中的特定文件是绑定区域文件,恰好命名为/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. Hack hgwebproxy传递application/x-msdos-program(跛脚和脏)
  3. 说服hgweb使用正确的内容类型(太棒了!希望你能帮忙)

Tags: 文件texthttps模板类型bitbucket内容application
1条回答
网友
1楼 · 发布于 2024-04-25 09:57:08

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

相关问题 更多 >

    热门问题