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

roo*_*ook 5 javascript browser http

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

我的问题是:除了那些内容类型是否text/html会执行JavaScript?对于任何常见的浏览器(IE,Firefox,Chrome,Safari),我都想尽可能完整的列表.

Pek*_*ica 4

我不知道完整的列表,而且很可能没有这样的公开列表。您可能需要自己找出答案。(尽管我认为没有什么反对建立一个带有多个 iframe 的测试页面,并要求 SO 社区提供各自浏览器的数据。以前已经这样做过。)

在 Internet Explorer 中,这个肯定应该在列表中:

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

  • application/form-data
  • text/xhtml+xml(曾经在2000年提出过,不知道后来发生了什么)

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

如果您想选择开源浏览器的硬核,请检查他们的源代码或在他们的邮件列表/论坛上询问。我有一种感觉,好的东西都是text/html硬编码的。

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

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