您正在查看的页面具有 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 中,这个绝对应该在列表中:
-
application/hta
对于Hypertext Applications
我要测试的候选对象(因为粗心的程序员可能会激活它们进行 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/