【问题标题】:Cross dromain posting data in ie9 from http server to https server跨域在 ie9 中将数据从 http 服务器发送到 https 服务器
【发布时间】:2012-09-13 03:38:58
【问题描述】:

我有用户输入的数据发布到不同的域和不同的协议。在阅读了一些资料后,我发现微软的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);“看起来”就像在发送时一样,我无法找到相关信息或在控制台中看到它。我看了this 但不太明白;控制台回复: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);
  }

谁能帮我解决这个问题?

【问题讨论】:

    标签: ajax internet-explorer-9 postmessage xdomainrequest


    【解决方案1】:

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

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

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

    【讨论】:

    • 让它与 IE10 一起工作。用IE9检查。我知道 IE10 支持 CORS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多