3

別のドメインと別のプロトコルに投稿されているユーザー入力データがあります。いくつか読んだ後、マイクロソフトのXDomainRequestオブジェクトがクロスオリジンの相互作用を許可していないことを発見しました (異なるプロトコル、ポート、ここの #7 .

私は、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);送信されているように「見えます」が、それに関する情報を見つけることができなかったり、コンソールで表示したりできませんでした。私はこれを見ましが、よくわかりませんでした。コンソールが応答しました: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 に答える