【问题标题】:File upload sometimes not working on IE9文件上传有时无法在 IE9 上运行
【发布时间】:2012-12-31 23:53:32
【问题描述】:

我正在使用 valums ajax-upload 和 ashx 处理程序,让用户在我正在开发的 webapp 中上传文件。对于大约 95%(约 3000)的用户来说,一切都运行良好。

在最后大约 5% 的时间里,我收到报告说上传永远不会完成,人们说轮子一直在旋转。出现这个错误的人似乎都在使用IE9.0。

我已经在所有可以遇到的 IE9.0 上进行了测试,但仍然无法重现错误。我也尝试记录所有可以想到的错误,但仍然没有运气。

请,任何人都可以重现该问题,并希望给我一个 JavaScript 控制台错误记录(如果有的话)。要进行测试,请转到第 2 步(上传部分)并尝试上传一个小文本文件:

https://jobmatchprofile.com/backend/login.aspx?auto_login=24G3FY

更新

我已与遇到此问题的用户联系。可以在此处看到错误消息。它用丹麦语写着:“SCRIPT5 访问被拒绝”。

错误信息

奇怪的是,用户的 IE 版本与为其他人工作的相同(例如我):我一直在测试:9.0.8112.16421 并且还运行 WIN7(和我一样)。但是 Product-id 不同,他有一个丹麦版本,而我有美国版本。

更新 II

我终于能够重现此错误。我知道这听起来有点奇怪,但相信我这是真的:通过发送到我的 gmail 帐户的链接打开页面时,我得到了同样的错误。第一次 Update 的用户也使用 gmail 打开页面。

【问题讨论】:

  • 你是如何意识到这只是 IE 的问题?
  • 来自我为所有用户记录的用户代理字符串 - 从我挖掘到所有使用过的 IE 的 5-6 个案例中。但你是对的,这可能是巧合
  • 那么文件大小或者用户取消上传的情况如何?
  • 文档的最大文件大小为 4Mb,图像的最大文件大小为 6Mb,如果用户尝试上传较大的文件或格式不可接受的文件,则会显示适当的警告消息,所有这些都应该有效。但是对于失败的用户来说,当他们尝试上传一个小文本文件 (1kb) 时它也会失败 - ajaxwheel 只会永远旋转。
  • 可以确认您没有在代码中使用document.createElement("<iframe>"); 吗? stackoverflow.com/questions/5344029/…

标签: javascript asp.net html ajax file-upload


【解决方案1】:

您对 Gmail 的引用特别指出了解决方案的方向:当您单击电子邮件中的链接时,Gmail 会从 HTTP 标头中删除引荐来源数据,除非您使用鼠标右键并选择“ Open in New Tab [or Window]”,大概是因为这可以防止他们的代码拦截标题。您的脚本是否正在检查有效的 HTTP REFERRER?


您是否在进行任何跨(子)域或跨协议 AJAX 调用?如果是这样,那么您可能必须代理请求。考虑来自 Yahoo! 的以下解决方案开发者网络: http://developer.yahoo.com/javascript/howto-proxy.html

另见:

(Un)幸运的是,我无法在 IE9,v. 9.0.8112.16421 中重现该错误(尽管我在尝试上传空的 .txt 文件时确实遇到了一般的现场错误,但这似乎完全无关)。

【讨论】:

  • 非常感谢您的回答 - 我现在可以自己重现错误,请参阅我的问题中的更新 II。将查看您的链接。
  • 我忘记了:没有跨域或跨协议 ajax 调用。我什至可以在这里复制它http://jsfiddle.net/Claudius/q4b6k/15/ 要复制,请将 jsfiddle 链接发送到 gmail 帐户,然后使用 IE9.0 单击 gmail 中的链接 - 它会抛出错误(检查 javascript 控制台)!其他浏览器不会抛出错误,并且使用 IE9.0 从其他页面(如 SO)链接也可以
  • 我已经更新了我的答案。您对 Gmail 的引用泄露了它(我在第一次阅读时错过了您的第二次更新)。
  • 谢谢,这可能很有趣。我不知道该脚本使用引荐来源标头。但它确实会动态创建表单和 iframe,因此可能会以某种方式间接使用引荐来源网址。但有一件事让我很困扰:当点击 Gmail 中的链接时,您会转到我​​的 webapp 上的概览页面。在此概览页面中,您单击另一个链接以转到文件上传页面(在同一域上)。它在文件上传页面上引发脚本错误。那么,即使 Gmail 去除了引荐来源网址,我的文件上传页面是否没有有效的引荐来源网址集(即我的 web 应用程序的概览页面)?
  • 您的文件上传页面绝对会,但创建会话的是您的“概述”页面。您是否尝试过将脚本更新到最新版本?当前版本为 1.9.0 时,您使用的是 jQuery 1.6.1。
【解决方案2】:

ie9 的解决方案就是使用https 上传:

https://www.parse.com/questions/internet-explorer-and-the-javascript-sdk

【讨论】:

    【解决方案3】:

    即使您确定这与用户单击电子邮件中的锚点有关,但我会说这是因为 Internet Explorer 中的策略设置。我以前见过类似的错误,并注意到最常见的错误与公司环境中用户的 Internet Explorer 策略有关。

    【讨论】:

    • 事实是 1) 通过使用 IE9.0 的 Gmail 链接访问上传页面会出现错误 2) 通过单击其他地方的链接访问上传页面(如这里在 SO)或在浏览器的地址栏中手动输入不会出现错误(相同的浏览器,相同的计算机,相同的位置)。另外:报告问题和我检查过的用户(5-7 个用户)都使用 IE9.0 并且提供了一个 gmail 帐户作为联系邮件。所以我很确定这在某种程度上是 IE9.0 和 Gmail 的奇怪组合,尽管我同意这听起来太奇怪了,不可能是真的
    • 并且:Gmail 中的 CTRL+单击(或左键单击 -> 在新选项卡中打开链接)不会像正常单击一样出现错误。
    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2011-09-24
    • 1970-01-01
    • 2021-11-05
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多