iis-7 - 为什么 IIS 要求声明 mime 类型?

标签 iis-7 web mime-types mime iis-express

在我的一项作业中,我尝试渲染 SVG 图像。我花了一些时间才找到一个链接,其中指出,为了让 IIS Express 呈现 SVG 图像,您必须在 web.config 文件中包含以下代码

<staticContent>
    <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>

它成功了。但我不明白为什么/如何?以前我认为服务器应该发送正确的 Content-Type header 。但我的 svg 代码是用 Javascript 编写的。我认为(也许是错误的)IIS 只向客户端发送 HTML 文件,而这些 HTML 文件在 header 中链接了 Javascript。那么,这是否意味着 IIS 也在扫描与 HTML 关联的所有 javascript 文件?这似乎有点难以置信。如果我的 HTML 主文件中有 10 个 javascript 文件,其中一个包含 SVG 文件,这是否意味着 IIS 会扫描所有这些文件,然后发现 SVG 丢失?是这样的吗?

谢谢

最佳答案

当您的浏览器访问某个 URL 时,它最初仅下载 HTML。对于每个链接的文件(Javascript、图像、CSS、SVG 等),浏览器都会向服务器发出单独的请求。正如您所指出的,除非 IIS 能够识别 MIME 类型,否则它不会提供这些文件。

回答你的问题,不,事情不是这样的。 IIS 不会扫描 HTML 文件,它只是被动响应来自客户端(浏览器)的请求。浏览器解析 HTML 和 Javascript,并执行 Javscript,根据需要额外往返服务器以获取链接资源。

编辑

IIS MIME 类型的目的有两个:

  1. 限制对服务器资源的访问。如果客户端请求 Web.config 文件,那么 IIS 当然应该阻止该请求,因为该文件可能包含密码等敏感信息。
  2. 跟踪如何处理每种文件类型。例如,HTML 文件一般应该直接发送,但 ASPX 文件需要先经过 ASP.Net 处理,然后再发送。

关于iis-7 - 为什么 IIS 要求声明 mime 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12058601/

相关文章:

asp.net-mvc - asp mvc iis7 Debug模式错误页面输出不可读的字符

缺少 ASP.NET_SessionId

php - CodeIgniter - 通过单击按钮将值从 View 传递到 Controller

html - 如何使 HTML 中的水平线 (<hr>) 跨越所有页面宽度

asp.net - 如何从 web.config 读取系统值并在 ASP.NET MVC C# 方法中使用

javascript - 如何在 jQuery 中执行 click()

android - 如何判断.3gp文件是android中的音频还是视频

javascript - 资源解释为脚本,但使用 MIME 类型 text/x-js 进行传输

php - CSS 样式表无法连接到我的 HTML 登录页面(未加载,因为它的 MIME 类型 “text/html” 不是 “text/css” )

asp.net - 禁用从IIS 7继承 "Allow all users"规则