我输入了要输入到不同域和不同协议的数据。阅读后,我发现Microsoft的XDomainRequest
对象不允许跨域交互(不同的协议,端口,#7 here。
我正在为FF,Safari和Chrome(有效)进行标准的CORS AJAX调用,并且我一直在尝试对IE9使用XDomainRequest对象。
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);
}
有人可以为此提供一些帮助吗?
在此处下载脚本:https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
在链接到jquery之后但在进行ajax调用的脚本之前,将其包含在html中。
[以一种相当不灵活的方式,我使用此脚本将请求发送到在heroku(http-> http =正常运行)上运行的应用程序,然后在heroku站点上运行了sinatra应用程序,然后将数据发送至https网站。不漂亮,但是可以用。