web-dev-qa-db-ja.com

Azure Webサイト(Azure App Services)でAccess-Control-Allow-Credentialsヘッダーを有効にする

最近、APIアプリケーションをAzureクラウドサービスからAzure Webサイトに移行しました。一部のクライアントは、認証に従来のプロトコルを使用しており、(通常の_Authorization: Bearer_ HTTPヘッダーの代わりに)Cookieを使用しています。クライアントがすぐに移行できないため、この認証プロトコルをもう少し長くサポートする必要があります。

APIに向けられたクロスオリジンのAjaxリクエストでCookieをサポートするには、クライアントはXMLHttpRequestでwithCredentials設定をtrueに設定する必要があり、サーバーは_Access-Control-Allow-Credentials_ヘッダー、およびCORSリクエスト。

私たちが直面している問題は、Azure WebサイトがCORSをすべて単独で管理し、応答に独自の構成(許可されたオリジンのリストに限定されます)を使用することです。これにより、このヘッダーを設定できません...したがって、すべてのAjaxクライアント用のアプリケーション!

このヘッダーを(一時的に)応答に追加する方法はありますか?

12
Maxime Rossini

ついに、Azure Apps CORSミドルウェアの動作を理解することができました。これを無効にするには、WebアプリのCORSブレードで許可されているすべてのOriginエントリーをクリアする必要があります(*を含む)。その後、Web Api 2機能を使用するか、web.configを使用して、自分でCORSを管理できます。

この情報は ドキュメント でも利用できます。

1つのAPIアプリでWeb API CORSとApp Service CORSの両方を使用しないでください。 App Service CORSが優先され、Web API CORSは無効になります。たとえば、App Serviceで1つのOriginドメインを有効にし、Web APIコードですべてのOriginドメインを有効にすると、Azure APIアプリは、Azureで指定したドメインからの呼び出しのみを受け入れます。

したがって、最終的な答えは次のとおりです。アプリケーションに特別なCORS管理が必要ない場合は、Azure App Service CORSを使用できます。それ以外の場合は、自分で処理し、WebアプリですべてのCORS構成を無効にする必要があります。

18
Maxime Rossini

これは、Webアプリで使用できるweb.configファイルで実行できることです。

Azure Portalから追加するツールであるVisual Studio Online(Monaco)を使用して編集できます。

詳細はこちら: http://enable-cors.org/server_iis7.html

1

これは、Azure App Service CORS機能でサポートされるようになりました。 残念ながら、まだUXはありませんので、有効にするのは少し大変です。 現在、2つの簡単な方法があります。

  1. Azureポータルで、Webアプリに移動します。 API> CORSに移動します。 Enable Access-Control-Allow-Credentialsのチェックボックスが追加されました。このボックスをチェックしてSaveを押します。

  2. 次のコマンドでAzure CLIを使用します。

az resource update --name web --resource-group myResourceGroup --namespace Microsoft.Web --resource-type config --parent sites/<app_name> --set properties.cors.supportCredentials=true --api-version 2015-06-01

その他のドキュメント こちら をご覧ください。

注:これは、許可されたオリジンとして*では機能しません。これは、セキュリティの選択です。

1
Connor McMahon