1

嗨,有谁知道如何在 IE 8、9 中将多部分表单跨域发布到 Amazon S3(例如)?

我们使用了 jQuery 表单插件。也许它不支持 XDomainRequest 对象?jQuery 表单是错误的方式吗?

我们已将 Amazon S3 存储桶配置为允许 origin * 用于发布、获取,因此可以在所有其他浏览器甚至 IE 10 中工作。

它开始发布。据我所知,它显示针对亚马逊网址的发布状态消息,该网址显示在浏览器的左侧。但随后它会触发状态为“已中止”的错误返回函数(在 ajax 选项中指定)。没有其他的。所以看起来请求被中止了。该文件永远不会到达亚马逊,如果错误来自亚马逊,我猜它会更详细一点。

我也尝试过从 https 发布(正如有人在某处建议的那样,因为亚马逊上传 url 使用 https)。没有不同。

有任何想法吗?

/约翰

4

1 回答 1

0

您的怀疑是正确的 - 您的插件将不支持 XDomainRequest,因为它基于 jQuery。

jQuery 不包括对 XDR 的支持:

XDomainRequest 问题总结:

  • jQuery 不包括 XDomainRequest 支持,因为 XDR 存在许多严重的限制。

IE 版本 10支持 CORS,但以前的版本不支持并使用 XDR:

MSHTML/Trident 6.0 (Internet Explorer 10) 具有原生支持。MSHTML/Trident 4.0 & 5.0 (Internet Explorer 8 & 9) 通过 XDomainRequest 对象提供部分支持。


您可以尝试将此 jQuery 插件添加到您的网站,看看它是否能解决您的问题。从自述文件:

jQuery 插件,在浏览器之间透明地添加跨域资源共享 (CORS),包括 IE8+


编辑:如果这不起作用,您可以添加尝试相同修改的以下代码段:

  if ('XDomainRequest' in window && window.XDomainRequest !== null) {
 
  // override default jQuery transport
  jQuery.ajaxSettings.xhr = function() {
      try { return new XDomainRequest(); }
      catch(e) { }
  };
 
  // also, override the support check
  jQuery.support.cors = true;
 
}
于 2013-02-27T20:03:59.817 回答