无论如何在django开发服务器中设置MIME类型? 具体来说,我希望从Chrome开发工具中的警告中删除此消息。
Resource interpreted as Image but transferred with MIME type image/x-png
答案 0 :(得分:15)
事实证明这就像添加
一样简单if DEBUG:
import mimetypes
mimetypes.add_type("image/png", ".png", True)
到settings.py
答案 1 :(得分:2)
Django开发服务器使用mimetypes
模块为任何给定的文件猜测适当的MIME类型,并且该模块根据您的操作系统使用不同的配置。
尤其是在Windows上,它从注册表中的HKEY_CLASSES_ROOT
加载内容类型(例如.js文件的键HKEY_CLASSES_ROOT\.js\Content Type
),并且似乎可以用您不希望使用的方式设置此配置期望(例如,通过在文本编辑器中打开javascript文件)-甚至与Python或Django无关,因为Go also uses the registry and is affected the same way。
为受影响的文件扩展名修改注册表项应该可以解决此问题,而无需进行任何Django设置更改(但是可能不希望进行系统范围的配置更改):
Windows Registry Editor Version 5.00
; Fixing the question's issue with PNG
[HKEY_CLASSES_ROOT\.png]
"Content Type"="image/png"
; Fixing a common problem with Javascript files
[HKEY_CLASSES_ROOT\.js]
"Content Type"="text/javascript"
在其他操作系统上,MIME映射配置在大多数用户永远都不会修改的文件中,因此这通常不是问题。但是,如果需要,mimetypes.knownfiles
是一个路径列表,预期包含MIME类型映射,可以根据需要进行编辑。
答案 2 :(得分:0)
2020年答案:
如果您希望任何mime内容类型被浏览器自动检测,这就是解决方案。
多次痛苦的静态失败尝试之后,这是动态解决方案。
def fetch(request):
import mimetypes
clientRequestUrl=os.getcwd()+'/servlet'+request.path
try: return HttpResponse(fread(clientRequestUrl), content_type=mimetypes.guess_type(request.path)[0])
except Exception as e: return HttpResponse(str(e)+'===> Error Thrown <br>')