3

我有用户输入的数据发布到不同的域和不同的协议。在做了一些阅读之后,我发现微软的XDomainRequest对象不允许跨域交互(不同的协议,端口,#7 here .

我正在为 FF、Safari 和 Chrome(有效)进行标准 CORS AJAX 调用,并且我一直在尝试将 XDomainRequest 对象用于 IE9。

if ($.browser.msie && window.XDomainRequest) {
  var xdr = new XDomainRequest();
  xdr.open("post", "https://_url_here");
  xdr.send( post_data );
}else { $.ajax(params); }

当我打开一个https版本的源站时,它成功地将数据发送到接收url,但它无法解析任何数据。xdr.send(post_data);“看起来”就像在发送它时,我无法找到相关信息或在控制台中看到它。我看着这个,但不太明白;控制台回应:Unable to get value of the property 'postMessage': object is null or undefined

if ($.browser.msie && window.XDomainRequest) {
  var domain = $("iframe").contentWindow;
  domain.postMessage( post_data );
  }else {
    $.ajax(params);
  }

谁能给我一些帮助?

4

1 回答 1

1

在此处下载脚本:https ://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest

在链接到 jquery 之后,但在您进行 ajax 调用的脚本之前,将其包含在您的 html 中。

以一种相当笨拙的方式,我使用这个脚本将请求发送到我在 heroku 上运行的应用程序(http -> http = 工作正常),然后在 heroku 站点上运行一个 sinatra 应用程序,然后将数据发送到 https 站点. 不漂亮,但它的工作原理。

于 2012-11-12T17:19:19.107 回答