无论如何在 django 开发服务器中设置 MIME 类型?具体来说,我很想从 Chrome 开发工具的警告中删除此消息。
Resource interpreted as Image but transferred with MIME type image/x-png
无论如何在 django 开发服务器中设置 MIME 类型?具体来说,我很想从 Chrome 开发工具的警告中删除此消息。
Resource interpreted as Image but transferred with MIME type image/x-png
原来它就像添加一样简单
if DEBUG:
import mimetypes
mimetypes.add_type("image/png", ".png", True)
到 settings.py
Django 开发服务器使用该mimetypes
模块来猜测任何给定文件的适当 MIME 类型,并且在底层,该模块根据您的操作系统使用不同的配置。
特别是在 Windows 上,它从HKEY_CLASSES_ROOT
注册表中加载内容类型(例如HKEY_CLASSES_ROOT\.js\Content Type
.js 文件的键),并且似乎通常可以以您不期望的方式设置此配置(例如通过在文本编辑器中打开 javascript 文件)- 它甚至不是 Python 或 Django 特定的,因为Go 也使用注册表并且受到同样的影响。
修改受影响文件扩展名的注册表项应该可以解决此问题,而无需更改任何 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 类型映射的路径列表,可以根据需要进行编辑。
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>')