javascript - 设置多种 MimeTypes

标签 javascript html mime-types content-type meta-tags

我想知道如果我运行这段代码会发生什么:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>MimeType Tester</title>
    <meta charset="utf-8" />
    <meta content="text/xml; charset=utf-8" http-equiv="content-type" />
    <meta content="text/html; charset=utf-8" http-equiv="content-type" />
</head>
<body>
</body>
</html>

我的内容将被解析为 XML 或 HTML?两个都?其他?

我还有一个 JS 代码设置 mimetype 两次:

req = new XMLHttpRequest();
req.overrideMimeType('text/xml');
req.overrideMimeType('text/html');

我的内容将被解析为 XML 或 HTML?两个都?其他?

这两个代码之间有区别吗? 结果一样吗?

最佳答案

首先获取 HTML。除非服务器解释meta http-equiv=content-type设置并将其转换为真正的HTTP header (HTML4说这是meta http-的目的) equiv,但服务器几乎从不这样做),那么 HTTP 内容类型就不会受到影响,而决定是否调用 HTML 或 XML 解析器的正是元 http-equiv 设置(或 doctype)。

因此,这通常意味着将调用 HTML 解析器,但问题外部的配置或应用程序代码可能会导致浏览器以不同的方式处理它。 (作为 XML、纯文本、二进制数据或其他数据)

至于JS,我不知道也没有测试过,但想不出为什么第二个 overrideMimeType 调用不会替换第一个调用的设置,并且请求会以text/html 的内容类型。这似乎是此处规范要求的效果:http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-overridemimetype%28%29-method但它没有明确涵盖这种情况。

服务器如何解释从浏览器发送的 mime 类型和内容完全取决于服务器上运行的代码。它可能会考虑 mime 类型来选择解析器,也可能会忽略它,或者做一些完全相反的事情。

关于javascript - 设置多种 MimeTypes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984935/

相关文章:

javascript - 设置一个 typescript 库以在 Nodejs、浏览器和其他 Typescript 项目中使用

javascript - HTML5 历史记录、后退按钮和外部链接

javascript - 聊天 Web 应用程序 jquery scrollTop 问题

垃圾邮件中的 javascript;它想做什么?

html - Bootstrap : col-sm-6 expands above other columns on xs screen size

c# - ASP.NET、C#、IIS、MIME 类型、文件上传条件

javascript - 使用 jquery 在表中移动 X 行

php - HTML 空 <a> 标签空格?

api - 如何将供应商特定的 MIME-TYPES 用于 "private-labeled"REST API

css - 内部服务器错误 500.19::.less mimeMap