0

これが私の問題です:

2 つの Web アプリケーションがあり、1 つ目から 2 つ目にファイルをアップロードしたいと考えています。したがって、「Same Origin Policy」の問題に直面する必要があります。

私の場合、私は 2 番目の Web サイトを所有しており、1 番目の Web サイトは私のものではありません。これは既存の Web アプリケーションの新規顧客向けであり、php で開発されています。php の知識が不足しているため、サーバー側の php コーディングを行うことができません。そのため、そのページの 1 つに JavaScript コードを挿入することしかできません。したがって、プロキシサーバーオプションもありません。

3 つ目の問題は、このファイルのアップロードをすべてのブラウザー (IE8+ を含む) で動作させる必要があることです。そのため、File API と XHR も使用できません。

私の悪夢の解決策はありますか?

4

1 に答える 1

1

アップストリームに送信する必要があるデータの量はわかりませんが、次の 2 つのオプションがあります。

1) URL に関連するすべてのデータを含むイメージ リクエストを作成します。

アップストリームに送信するデータを解析して、URL からこのデータを読み取って収集する方法を知っている特別な Web サービスに送信されるクエリ文字列パラメーターにします。サーバーの応答は空でなければなりません。注: URL は 2000 文字を超えないようにしてください。大規模なデータ セットがある場合は、オプション 2 を使用することをお勧めします。

例:

/* I'd recommend doing the following with jQuery or some other JS framework */
var img = document.createElement('img');
img.src = "http://website2.com/uploadHandler" + 
           "?data1="+encodeURIComponent(data1) +
           "&data2="+encodeURIComponent(data2);
document.getElementsByTagName("body")[0].appendChild( img );

OUTPUT (ボディタグの最後):

<img src="http://website2.com/uploadHandler?data1=myName&data2=myInformation" />

これにより、上記のアドレスのサーバーに対して HTTP GET 要求が行われます。秘訣は、実際に画像を提供するのではなく、リクエストからデータを収集することです。

2) フォームポスト:

JavaScript を使用してフォームを作成し、そのフォームにアップロードするデータを含む入力フィールドを入力します。myForm.submit() を使用して、このフォームを自動的に送信できます。jQuery を使用すると、次のようになります。

$(document.body).append( $('\
   <form name="myform" action="http://website2.com/uploadHandler">\
     <input type="text" name="data1" value="myName" />\
     <input type="text" name="data2" value="myInformation" />\
   </form>') );
document.myform.submit();

この手法を使用すると、新しいページが読み込まれます。ただし、サーバー側でリダイレクトを使用して元のページにリダイレクトすることはできます。リダイレクトを選択した場合は、以下をお読みください: http://www.theserverside.com/news/1365146/Redirect-After-Post

于 2013-01-08T20:04:46.667 に答える