IE声称不识别文本/javascript MIME类型
IE is claiming not to recognize the text/javascript MIME type
我们一直在开发Ruby on Rails应用程序。我们最近将这个应用重新部署在一个使用HTTPS的Apache代理后面。
由于我们已经这样做了,我们的一个用户在尝试使用应用程序时被发送到以下页面:http://shell.windows.com/fileassoc/mimeassoc.asp?mime=text/javascript,它说:
MIME Type: text/javascript
Description: UnKnown
Windows does not recognize this MIME type.
有人知道在什么情况下IE会声称不知道如何处理text/javascript
文件吗?到目前为止只有这一个用户。
Windows 7/IE8和XPsp2/IE8
EDIT添加IE禁止的完整HTTP响应
HTTP/1.1 200 OK
Date: Mon, 24 Oct 2011 00:31:27 GMT
Server: Apache/2.2.3 (CentOS)
X-Powered-By: Phusion Passenger (mod_rails/mod_rack) 3.0.9
ETag: "a6d7d64e3ca943eabc73db920baa7d76"
Cache-Control: max-age=0, private, must-revalidate
X-UA-Compatible: IE=Edge,chrome=1
X-Runtime: 0.003257
Status: 200
Content-Type: text/javascript; charset=utf-8
Connection: close
window.location.href='https://xx.xx.org.au/AED/sessions/new'
你应该试试application/javascript
好的。看来我们弄明白了。这是我们的应用程序中的一个错误,导致它向浏览器发送了一些无效的JavaScript。似乎Rails通过发送一个小JS片段来处理未认证会话到登录页面的重定向,看起来像这样:
window.location.href='https://blah.blah.org.au/APP/sessions/new'
我们在这个文件的ERB中有一个错别字,使得它发送的是:
' %>
window.location.href='https://blah.blah.org.au/APP/sessions/new'
有趣的是,只有一些版本的IE会被这个混淆
IE应该能够识别text/javascript(例如,这里提到了'text/javascript')。肯定还有其他因素在起作用。你可以试试:
(1)你可以直接在script标签
中指定类型<script type="text/javascript" src="..."></script>
(2) javascript是否来自同一站点,具有相同的协议?当来自不安全的地址时,用户可能会阻止不安全的内容,IE可能只是给你一个误导性的错误信息。
(3)因为你现在在apache后面,还有其他的头可能会让IE困惑吗?
(4)我打赌你检查了Rails设置资源的正确位置(即它使用代理主机,apache,而不是Rails)。
http响应头是否指定X-Content-Type-Options: nosniff?如果是,ie9将不会执行任何脚本,直到你这样做
我怀疑你的javascript内容要么不正确,要么只是不"IE"正确。: -)
首先,如果你说它是UTF-8,你确定这是你提供的吗?按照Brad的建议,删除字符集定义,看看行为是否改变。
还获取返回的javascript的副本,并尝试在某处验证它。我看到其他人报告的问题是,javascript以某些特定的方式被破坏,导致只有某些版本的IE崩溃。你是否在连接多个js文件或类似的东西?另一个例子是javascript文件中意外的%>标签会混淆一些浏览器。
通过使用firebug或chrome开发人员工具抓取客户端返回值,您可以确保代理不会搞砸标头或编码(包括gzip)。
我还听说某些旧版本的IE不能正确处理iframes中的mime类型。你是否在使用ifframe ?
最后但并非最不重要的是,一些防病毒/安全软件会修改传出请求的Accept标头(不是很好吗?)欺骗服务器认为浏览器不支持gzip或其他东西。您可以获取javascript的传出请求的副本吗?您需要检查是否修改了请求头。
可以去掉"script
"标签的type
属性。HTML5不需要它,所有浏览器都将其理解为"本地风味的JavaScript",这正是你想要的。您的页面不会对HTML4 doctype进行验证,但只要您知道为什么它不验证,我认为这是可以的。工作比验证更重要。
http://shell.windows.com/fileassoc/mimeassoc.asp?mime=joke/trickquestion
- 如何通过JavaScript了解当前加载页面的mime类型或内容类型
- MIME与JavaScript的关系如何
- 我应该对 JavaScript 源映射文件使用哪种 MIME 类型
- Javascript Array 作为 BLOB(MIME TEXT 而不是 IMAGE)保存到 mySQL 数据库中
- Javascript:如何从HTML文件输入中获取.tgz MIME类型
- Javascript MIME
- 下载一个带有javascript的文件并忽略MIME
- 基本的javascript对象和mime关于基本的web服务器代码
- 如何用javascript将二进制数据和mime转换为图像
- GO: javascript and html MIME error
- 我可以在javascript encodeURIcomponent响应中添加mime类型吗?
- regex:在content-type http header中匹配javascript mime类型
- IE声称不识别文本/javascript MIME类型
- JavaScript可以在window.open上设置mime类型吗?
- 用Javascript直接发布MIME Multipart数据的服务器错误
- 资源解释为脚本,但传输MIME类型文本/html javascript
- JavaScript's文档.打开支持MIME类型参数
- 为mime附件包装内联javascript(每行最多72个字符)
- 如果上传的文件是音频、视频或图像类型,在使用JavaScript验证时依赖MIME TYPE是否可以?
- 脚本标签的类型属性的 javascript MIME 类型是什么?