用于 png 图像的 Chrome 中的 MIME 类型警告

刚用 chrome 运行了我的网站,令人惊讶的是,它为我的每一张.png 图片都提供了这样的警告:

Resource interpreted as image but transferred with MIME type application/octet-stream.

有人见过这个吗?

问候

48313 次浏览

这个警告告诉你,你的 Web 服务器没有配置为为 PNG 图像发送正确的 MIME 类型的元数据。您可能应该咨询 Web 服务器的管理员,并要求他们设置正确的 MIME 映射

我在使用 ASP.NET 开发服务器运行 ASP.NET WebForms 应用程序时遇到了这个问题。

我怀疑,如果您也使用 IISExpress 作为服务器,也会发生类似的情况(VS2010SP1)。

我通过编辑项目设置(在 Web 下)在本地“解决”了问题,并在本地计算机上从 ASP.NET Development Server 更改为 IIS。我可以看到 PNG 已经被正确地定义为图像 MIME 类型,实际上当我访问本地 IIS 服务器时,它正在提供具有正确类型的文件。

我在. htaccess (AddType image/type 扩展)中添加了类似的类型 也就是说。

AddType image/png cur
AddType image/svg+xml svg svgz

当然,以上的解决方案是完美的。只是为了避免警告和一个干净的控制台,我做了以下修改我的代码。我为此编写了一个额外的处理程序:

PNGHandler.cs

class PNGHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if(context.Request.HttpMethod == "GET")
{
string requestedFile = context.Server.MapPath(context.Request.FilePath);
FileInfo fileinfo = new FileInfo(requestedFile);
string contentType = "";
if (fileinfo.Exists && fileinfo.Extension.Remove(0, 1).ToUpper() == "PNG")
{
contentType = "image/png";
context.Response.ContentType = contentType;
context.Response.TransmitFile(requestedFile);
context.Response.End();
}
}
}
}

并在 system.web 下的 web.config 中添加了 Http 处理程序

<system.web>
<httpHandlers>
<add path="*.png" verb="*" type="PNGHandler" />
</httpHandlers>
</system.web>

对于我发现的垃圾邮件,最快的解决方法是使用 CTRL 键来选择错误、警告和调试,而不是全部。

All: enter image description here

错误、警告和调试: enter image description here

我通过在 控制面板 > Programs and Features > Turn Windows features on or off > IIS 组件 > 万维网服务 > 常见的 HTTP 特性中启用 静态内容解决了这个问题