2

HTML フォームを web-api に POST したい。

他のドメインで jQuery を使用して ajax POST を実行すると、すべて問題なく 200 OK表示されますが、firebug と応答タブでは、下の画像のような空白の応答が返されます。これは私のjQueryコードです:

var formData = new FormData($('form')[0]);
                var response = '';
                $.ajax({
                    url: 'http://localhost:2143/api/controller',
                    type: 'POST',
                    // Form data
                    data: formData,
                    //Options to tell JQuery not to process data or worry about content-type
                    cache: false,
                    contentType: false,
                    processData: false,
                    success : function(text)
                     {
                         response = text;
                         alert(response);
                     }
                });

私を助けてください...

4

1 に答える 1

5

ブラウザに組み込まれているためsame origin policy restriction、クロスドメイン AJAX 呼び出しを実行することはできません。考えられる回避策がいくつかあります。

  1. JSONP- ここでの考え方は、サーバーが JSON 応答をコールバックでラップするということです。これは GET リクエストでのみ機能するため、POST リクエストを送信しようとしていることがわかりますが、あなたのケースには適していない可能性があります。JsonpMediaTypeFormatterに示すようにカスタムを使用できますthis similar post
  2. CORS- サーバーは特別なAccess-Control-Allow-Origin応答 HTTP ヘッダーを送信する必要があります。ここでの欠点は、古いブラウザーではサポートされていない可能性があることです。詳細については、こちらblog postをご覧ください。
  3. サーバーサイドブリッジ。前の 2 つの手法が課されている制約のためにうまくいかなかった場合は、ドメインと API をホストしているリモート ドメインとの間のプロキシとして機能する JavaScript をホストしているドメインにサーバー側スクリプトを配置できます。この場合、AJAX リクエストを独自のドメインに送信し、ドメインがリモート API を呼び出して結果をクライアントに返します。
于 2013-04-07T08:39:20.930 に答える