【问题标题】:How to post a file and parse an xml reply in Internet Explorer 7如何在 Internet Explorer 7 中发布文件并解析 xml 回复
【发布时间】:2010-11-12 20:09:50
【问题描述】:

我编写了一个 Web 应用程序,它通过 http 将文件发布到一个安静的 Web 服务。如果服务发现请求有任何问题,Web 服务可以回复 400 或 403 响应。响应还包含描述使用 http 错误代码回复的原因的 xml。

我的 Web 应用程序将文件发布到隐藏的 iFrame 并使用 iFrame 的 onload 事件处理程序来执行解析 iFrame 中呈现的服务器响应的函数,并让用户知道文件上传的过程。

我的解决方案适用于 firefox 和 chrome,但不适用于 internet explorer 7。

我的问题是,如果服务器响应错误代码,例如400 或 403 internet explorer 7 加载它自己的静态错误页面。这意味着我的脚本无法解析响应中发送的错误消息,因为静态错误页面与脚本本身不是来自同一个域并且违反了相同的源策略(并且由于它是一个静态错误页面,因此 Web 服务的详细错误反正消息不会在那里)。

对于这个问题,我只看到了两种解决方法,如果可能的话,我宁愿避免它们:

A) 当用户代理指示 Internet Explorer 时,让 Web 服务返回 200,即使发生错误但包含指示错误的 xml 响应。

B) 让 Web 应用程序发布到一个“中介”,该中介将请求转发到 Web 服务,读取响应,然后将其转换为 200 或其他任何有效的(所以它基本上是选项 A,但更灵活,并且在至少这可以保持安静的 Web 服务“干净”)。

还有其他方法可以解决我的问题吗?

【问题讨论】:

  • 也许使用 Ajax 而不是 Iframe 来发布您的数据?
  • 如果服务器响应错误代码,error 事件不会在 iframe 上触发(而不是load 事件)?
  • Brian Driscoll:我正在发布一个或多个文件(来自客户端硬盘),是否可以使用 Ajax 上传文件?
  • JPot:加载事件已触发,但在尝试使用 javascript 访问 iFrame 时出现访问被拒绝错误。
  • 不,您不能通过 ajax 发布文件。 iframe 是唯一的选择。

标签: javascript ajax iframe internet-explorer-7


【解决方案1】:

假设您可以控制服务器,您可能会发现最好的解决方案是将 iframe 仅用于发送文件(即一种方式....客户端到服务器)。然后使用ajax轮询方案来判断post是否成功。它可能有点混乱,但应该更可靠,并且您还可以在帖子完成之前获取信息。

【讨论】:

    【解决方案2】:

    我设法解决了这个问题,因为一位同事记得,如果在发送 4xx 响应时响应正文不是一定长度,Internet Explorer 将加载其静态错误页面。

    解决方法是使用 4xx 响应发回更长的响应正文,例如包含空格的 xml 注释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多