jQuery表单后跨域Amazon S3即< 10,错误“中止”

时间:2013-02-25 18:30:20

标签: internet-explorer amazon-s3 cross-domain jquery-forms-plugin form-post

您是否有人知道如何在IE 8,9中将多部分表格跨域发布到Amazon S3(例如)?

我们使用了jQuery forms-plugin。也许它不支持XDomainRequest对象? jQuery是否构成了错误的方法?

我们已经配置了Amazon S3存储桶以允许origin *用于发布,获取并因此在所有其他浏览器中工作甚至是IE 10.

它开始发布。我可以告诉它,它显示针对亚马逊网址的发布状态消息,该消息显示在浏览器的左侧。但随后它会触发错误返回功能(在ajax选项中指定),状态为“aborted”。没有其他的。所以似乎请求被中止了。该文件永远不会到达亚马逊,如果错误来自亚马逊,我会猜测它会更加详细。

我也试过从https发帖(因为有人在某处建议,因为亚马逊上传网址使用https)。没有区别。

有什么想法吗?

/约翰

1 个答案:

答案 0 :(得分:0)

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

jQuery doesn't include support for XDR:

  

XDomainRequest问题摘要:

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

IE 10版supports CORS,但以前的版本不使用XDR:

  

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


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

  

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


编辑:如果这不起作用,您可以添加尝试相同修改的following snippet

  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;

}