5

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

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

有效。但我不明白为什么/如何?以前我认为服务器应该发送正确的 Content-Type 标头。但我的 svg 代码是用 Javascript 编写的。我认为(可能是错误的)IIS 只将 HTML 文件发送到客户端,并且这些 HTML 文件在标题中链接了 Javascript。那么,这是否意味着 IIS 也在扫描与 HTML 相关的所有 javascript 文件?这似乎有点难以置信。如果我的 HTML 主文件中有 10 个 javascript 文件,其中一个有 SVG 文件,这是否意味着 IIS 将扫描所有这些文件,然后发现 SVG 丢失?这是它的工作原理吗?

谢谢

4

1 回答 1

7

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

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

编辑

IIS 的 MIME 类型有两个目的:

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