【问题标题】:MIME type warning in chrome for png imageschrome中针对png图像的MIME类型警告
【发布时间】:2011-03-15 05:16:58
【问题描述】:

刚刚在 chrome 中运行我的网站,令人惊讶的是,它对我的​​每个 .png 图片都显示了以下警告:

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

有人见过这个吗?

问候

【问题讨论】:

  • 这也发生在我身上,但仅限于我的开发机器上。你找到解释了吗?
  • 有什么办法可以改变 Cassini 中的 MIME 类型?它似乎忽略了 web.config 中 <system.webServer> 部分中的 <staticContent> 设置。
  • 为什么我不能成为同一个问题获得 78 票支持的人?总是为时已晚......
  • 晚了将近 2.5 年 ;o)
  • 我刚刚发现你可以按住控制键并选择错误、调试和警告。这样,您的日志在调试时不会因为 mime 类型错误而杂乱无章,但您会看到其他所有内容。非常方便。

标签: image png google-chrome mime warnings


【解决方案1】:

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

我怀疑如果您也使用 IIS Express 作为服务器(VS 2010 SP1)也会发生类似的情况。

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

【讨论】:

  • 使用 IIS Express,PNG 图像上没有 MIME 类型警告。它基本上是更便携的标准 IIS 7.5(标准 IIS 在提供 PNG 时没有问题)。我刚刚启动了一个新项目,在 Cassini(开发服务器)中确认了警告,将其设置为 IIS Express 并确认警告消失了。
  • 我遇到的奇怪的事情是我创建了一个 MVC ASP.NET 4 应用程序,它可以很好地在 Cassini 中加载 png 文件。我将 MVC ASP.NET 1 应用程序升级到了 4 个,我在 Cassini 中遇到了这个问题,并且使用了相同的 png 文件。有什么想法吗?
  • @MattB - 我建议在文本编辑器中并排比较新的 MVC4 项目和升级后的配置文件(csproj 和 web.config)。我的第一个猜测是没有自动升级的程序集引用或类似的。如果它比这更复杂,您可能需要打开一个新问题并包含更多详细信息。
  • @StefanMohr 感谢您的回复,抱歉迟到了。我确实对两者进行了比较,并没有遇到任何看起来不寻常的东西。我什至对 csproj 和 web.configs 都进行了必要的更改,以使它们与新创建的 ASP.Net MVC 4 项目相同,但没有这样的运气。最终,我只是创建了一个新项目并将所有内容移植到新项目中。
  • 该网站托管在 Azure 上,我在打包控制台时遇到了这个恼人的错误。
【解决方案2】:

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

【讨论】:

  • @JimG 如果您是 Web 服务器的管理员,您可能会在 the sister site for webmasters 上找到答案
  • +1 这是最具描述性和最有用的答案。不知道为什么它的投票率如此之低。
  • @JimG。如果您是管理员,您会说出您使用的网络服务器,或者在网站上询问webmasters
  • 同意,最有用的答案。不明白@JimG。投反对票。
【解决方案3】:

我在 .htaccess 中添加了这样的类型(AddType 图像/类型扩展) 即

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

【讨论】:

    【解决方案4】:

    当然,上述解决方案是完美的。只是为了避免警告和干净的控制台,我在代码中进行了更改。 (这也仅适用于 ASP.NET 开发服务器)我为此编写了一个额外的处理程序:

    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 Handler

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

    【讨论】:

      【解决方案5】:

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

      全部:

      错误、警告和调试:

      【讨论】:

        【解决方案6】:

        我已通过在 控制面板 > 程序和功能 > 打开 Windows 功能或关闭 > IIS组件 > 万维网服务 > 常用HTTP功能

        【讨论】: