6

複数のドメインでXmlHttpRequestを使用できるように、ASP.NET WebAPIでCORS(クロスオリジンリソースシェアリング)を処理するための最も洗練された方法(現在利用可能)を知りたいだけですか?これをすべてのタイプのリクエスト(GEt、POSTなど)のヘッダーにOPTIONSと統合するにはどうすればよいですか?

ありがとう!

4

5 に答える 5

6

Tpeczekは素晴らしい発見をしましたが、私自身の調査を行っている間に、App_Startフォルダーの構成ファイルでCORSを構成できる、似たような非常に洗練されたCORS処理方法を見つけました。そのすべては、Thinkectureと呼ばれるオープンソースライブラリを使用して処理されます。詳細はこちらをご覧ください:

http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/

これには多くの利点があります。オリジン、メソッド(GET、POSTなど)、特定のコントローラーおよびアクションへのアクセスを構成でき、コントローラーを属性からクリーンに保つこともできます。

WebAPI、IIS、およびASP.NETMVCがサポートされています。

于 2012-10-05T13:08:24.437 に答える
3

以下を web.cofig ファイル (system.webserver 要素内) に追加します。

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Headers" value="accept, maxdataserviceversion, origin, x-requested-with, dataserviceversion" />
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Max-Age" value="1728000" />
      </customHeaders>
    </httpProtocol>

global.aspx.cs ファイルに以下のコードを追加します

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (Request.Headers.AllKeys.Contains("Origin") && Request.HttpMethod == "OPTIONS")
        {
            Response.StatusCode = 200;
            Response.End();
        }
    }
于 2013-07-09T11:15:36.760 に答える
3

Carlos Figueira は、CORS と ASP.NET Web API に関する素晴らしい一連の投稿を行っています。

個人的には、属性を簡単に拡張して許可されたオリジンを制御できるため、 Take 2アプローチの大ファンです。EnableCors

于 2012-10-05T08:07:24.003 に答える
2

Web API のナイトリーで CORS がサポートされるようになりました

http://blogs.msdn.com/b/yaohuang1/archive/2013/04/05/try-out-asp.net-web-api-cors-support-using-the-nightly-builds.aspx

ナゲットを使用して:

  • Microsoft.AspNet.Mvc.FixedDisplayModes パッケージをアンインストールします。
  • ナイトリー ビルドから Microsoft.AspNet.WebApi.Cors パッケージをインストールします。

次に、web.config でバインディングを修正します 次に、CORS を有効にします

config.EnableCors(new EnableCorsAttribute()) 

詳細については、この wiki を参照してください https://aspnetwebstack.codeplex.com/wikipage?title=CORS%20support%20for%20ASP.NET%20Web%20API&referringTitle=Specs

編集 19-04-2013 Scott Guthrie がそれについてブログを書いています: http://weblogs.asp.net/scottgu/archive/2013/04/19/asp-net-web-api-cors-support-and-attribute-based -routing-improvements.aspx

于 2013-04-09T07:08:19.630 に答える
0

CORS をどの程度細かく制御したいかによって異なります。たとえば、任意のドメインを許可する場合は、IIS で構成することにより、すべての応答に静的 CORS ヘッダーを追加できます。私はこのアプローチを選び、それについてここに書きました

于 2012-10-04T17:06:15.417 に答える