繁体   English   中英

与IIS 7和Cassini相比,将Web应用程序托管在IIS 6上时IE的行为有所不同

[英]IE is behaving differently when the web app is hosted on IIS 6, compared to IIS 7 & Cassini

我有一个Web应用程序,可在开发计算机上的所有浏览器(IE9,Firefox,Chrome,Opera和Safari)上正常运行。 当我将Web应用程序部署到测试服务器时,IE将开始阻塞特定的javascript组件(Zoomify)。

我可以打开IE 9,在一个选项卡中打开由开发托管的Web应用程序,在另一个选项卡中打开测试服务器的Web应用程序,只有开发托管的应用程序可以工作。 除了web.config之外,两台计算机上的Web应用程序代码完全相同。

开发人员工具将两个站点都显示为处于Browser Mode: IE9 Document Mode: IE9 standards

Zoomify组件在以下行出现故障:

c.onreadystatechange=null

与错误:

SCRIPT13: Type mismatch

这里发生了什么? 为什么IE会根据托管Web应用程序的位置在处理Javascript方面表现出不同?


更新资料

我现在已经在另一台服务器上进行了测试,奇怪的是它可以正常工作。 此时,情况是当Web应用程序托管在IIS 6上时,javascript文件将在IE中失败。

Opera中存在类似的问题,但是我没有收到错误消息。

Dev Machine
Windows 7
Web Server: Cassini
Status: Working

Test Server 1
Windows Server 2003
Web Server: IIS 6.0
Status: Not working

Test Server 2
Windows Server 2008
Web Server: IIS 7.0
Status: Working

我的猜测是两种不同环境之间应用程序部署方式之间的路径差异...这可能会导致JS参考错误您是否在测试服务器上使用虚拟目录等?

您要在脚本元素上声明类型吗? 我认为是或者您是否具有指定X-Content-Type-Options的http响应标头:nosniff

您可以在这里参考: http : //blogs.msdn.com/b/ieinternals/archive/2010/09/27/ie9-beta-google-image-search-javascript-content-type-and-nosniff.aspx

失败的javascript行c.onreadystatechange=null具有误导性。 通过调试Zoomify javascript代码,我能够确定在调用堆栈的更深处正在生成错误。

Zoomify组件试图下载图像进行显示,但由于IE不支持通过XMLHttpRequest对象进行跨域调用而失败。 IE确实使用XDomainRequest对象支持跨域调用。 但是,Zoomify组件不提供对XDomainRequest支持。 Opera 11也不支持跨域调用。

对于IE和Opera的问题,我的解决方法是不使用跨域调用,并通过与Web应用程序位于同一域上的URL使图像资源可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM