2012-05-21 9 views
7

AJAXを使用してMVC 3コントローラにフォームを送信したいとします。MVC 3とのクロスオリジンリソース共有を有効にする/使用するにはどうすればよいですか?

フォームとコントローラは2つの異なるドメインにあります。そのため、私はCORSを使いたいのです。

私は、次のコードは、ASP.NETでトリックを行う必要があることを読みました:

Response.AppendHeader("Access-Control-Allow-Origin", "*"); 

http://enable-cors.org/#how-asp.netから、このコードは、フォームデータを受け取り、コントローラに直接行くべきでしょうか? 私の知る限り、CORSが有効かどうかを判断するために、クライアントのデータとサーバーの間でデータの交換が必要です。そのため、コードの1行は別の場所に移動する必要があります。

ありがとうございました

+0

仕様に準拠したオープンソースのCORS実装を作成しました。この実装については、こちらを参照してください。http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-思考とのアイデンティティモデル/ –

+0

非常にニース!ありがとうございました – Kenci

答えて

3

これはコントローラーに入る可能性があります。実際には、クロスドメインAJAX呼び出しから呼び出される必要があるすべてのコントローラーアクションで繰り返すことを避けるために、カスタムアクションフィルターでそれを外部化しています。追加の手順は必要ありません。あなたのブラウザがCORSをサポートしていることを確認してください。なぜなら、この行を追加しないと、まったく効果がないからです。

+0

答えをありがとう。コントローラにヘッダを追加すると、クライアント上で通常のajax POSTを使うことができますか、それとも動作するために何かを指定する必要がありますか? – Kenci

+0

いいえ、特に指定する必要はありません。使用しているブラウザがCORSをサポートしている場合、標準の '$ .post()'で動作するはずです。 –

+0

私はipad2アプリケーションのためにそれを使う必要があります。だから、新しいout-of-the-box ipad2がそれをサポートすることを期待しています。 http://caniuse.com/cors :) – Kenci