javascript - 什么内容类型在浏览器中执行 javascript?

标签 javascript http browser

您正在查看的页面具有 Content-type: text/html 的 HTTP header 元素。 HTML 正常显示,JavaScript 将被执行。如果您有 Content-Type: text/javascript,则 JavaScript 不会执行,它只是 displayed .

我的问题是:是否有除 text/html 之外的内容类型将执行 JavaScript?我希望所有常见浏览器(IE、Firefox、Chrome、Safari)的列表尽可能完整。

最佳答案

我不知道完整的列表,很可能没有这样的列表公开存在。您可能需要自己找出答案。 (虽然我认为没有什么可以反对设置一个带有多个 iframe 的测试页面,并要求 SO 社区为他们各自的浏览器提供数据。之前已经这样做了。)

在 Internet Explorer 中,这个绝对应该在列表中:

我要测试的候选对象(因为粗心的程序员可能会激活它们进行 HTML 解析)包括:

  • application/form-data
  • text/xhtml+xml (以前是 2000 年的 proposed,不知道后来发生了什么)

但是,我用 Chrome 9 和最新的 Firefox 测试了它们,它们拒绝除 text/html 之外的所有内容。 . Firefox 将它们显示为可下载资源,我认为这将它们从您的方程式中消除,因为其中的任何 JS 都将在本地上下文而不是 URL 中执行。 (IE 正在为我执行包括 text/plain 在内的所有内容,但我认为这是与我的服务器的 header 混淆。)

如果您想对开源浏览器进行核心确认,请检查他们的源代码或在他们的邮件列表/论坛上询问。我有一种感觉,好的人有text/html硬编码。

编辑:啊! Firefox、Chrome 和 IE 解析 HTML 并执行脚本,无论内容类型如何 - 我成功地设置了 Content-type: text/poppycock - 当资源的扩展名是 .htm 或 .html 时。这意味着您不仅要测试 MIME 类型,还要测试文件扩展名(它不应在 HTTP 中发挥任何作用)。不知道 - 这可能是为了修复损坏的 Web 服务器的输出而引入的。像这样的事情就是我不从事 IT 安全工作的原因:)

所有测试均在 Windows 7 上进行。

关于javascript - 什么内容类型在浏览器中执行 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741438/

相关文章:

javascript - 你如何让 VS 2008 Javascript Intellisense 为复杂的原型(prototype)工作?

java - REST API 中幂等和安全 HTTP 方法之间的区别

html - 带有来自 base64_encode 的 src 的视频标签 html5 不适用于不同的设备和浏览器

windows - WSL (Ubuntu) : how to open localhost in browser from bash terminal

javascript - 相当于字典的数据结构?

javascript - 如何在 jQuery 中序列化多个可排序项和子项

ruby - 使用 Ruby 向网络服务器发送 XML 请求

http - 了解 OData 服务

android - 从应用程序创建浏览器书签

javascript - Node - 从等待结果返回内联中选择一个变量