【问题标题】:What content-type's execute javascript in the browser?什么内容类型在浏览器中执行 javascript?
【发布时间】:2011-06-12 02:29:02
【问题描述】:

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

我的问题是:除了text/html 之外,还有其他内容类型可以执行 JavaScript 吗?对于任何常见的浏览器(IE、Firefox、Chrome、Safari),我都希望尽可能完整地列出一个列表。

【问题讨论】:

  • 也许您的意思是哪些内容类型能够使 javascript 执行?因为 text/html 不执行 jasvascript,所以文档中的
  • @Rook 你在寻找替代品吗?
  • @Šime Vidas @chris 我需要一份所有这些的列表,这是用于 QA 目的。
  • @Rook 请注意,不同的浏览器可能会识别不同的内容类型。如果 IE 和 Safari(在 Mac 上)之间存在很大差异,我不会感到惊讶。您对特定浏览器感兴趣吗?
  • @Šime Vidas 任何常见的浏览器。

标签: javascript http browser


【解决方案1】:

我不知道完整的列表,而且很可能没有这样的列表公开存在。您可能需要自己找出答案。 (虽然我不认为有任何事情反对设置包含多个 iframe 的测试页面,并要求 SO 社区使用各自的浏览器提供数据。以前已经这样做了。)

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

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

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

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

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

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

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

【讨论】:

  • 文件扩展名通常无关紧要,如果 Content-Type 无法识别,浏览器可能会求助于 MIME 嗅探:mimesniff.spec.whatwg.org
【解决方案2】:

application/xhtml+xml 必须执行 Javascript。这是我脑子里唯一能想到的。

【讨论】:

    【解决方案3】:

    这不会很有用。 Javascript 无法导入其他脚本,因此您的脚本将与库隔离。将它们联系在一起的唯一方法是通过 HTML。此外,没有文档,输入/输出选项非常有限。

    【讨论】:

    • 哦,好吧 :) 听起来很有趣。它们是什么?
    【解决方案4】:

    PDF files can also execute javascript (application/pdf)。

    还有 XML 文档 (application/xml),包括 SVG (image/svg+xml),例如:

    <?xml version="1.0" encoding="utf-8"?>
    <document>
    <script xmlns="http://www.w3.org/1999/xhtml" src="xml.js"></script>
    </document>
    

    【讨论】:

      【解决方案5】:

      你试过application/javascript吗?

      【讨论】:

        猜你喜欢
        • 2016-06-24
        • 1970-01-01
        • 1970-01-01
        • 2012-12-03
        • 2014-03-30
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多