2016-04-26 9 views
6

最近Azure Cloud ServicesからAzure WebサイトにAPIアプリケーションを移行しましたが、一部のクライアントは引き続き認証用にCookie通常のAuthorization: Bearer HTTPヘッダーの代わりに)。クライアントがすぐに移行できないため、この認証プロトコルをもう少し長くサポートする必要があります。 APIに向けクロスオリジンのAjaxのリクエストでCookieをサポートするためにAzure Webサイト(Azure App Services)のAccess-Control-Allow-Credentialsヘッダーを有効にします

、クライアントは、XMLHttpRequestの中truewithCredentials設定を設定する必要があり、サーバーは、任意のCORS要求に同様Access-Control-Allow-Credentialsヘッダでrepondする必要があります。

私たちが直面している問題は、CORSをすべて単独で管理し、独自の構成(許可された起点のリストに限定されています)を使用して、このヘッダーを設定できない応答です。すべてのAjaxクライアントのためにアプリケーションを壊してしまいました!

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

答えて

11

。これを無効にするには、ウェブアプリケーションのCORSブレード(*を含む)の許可されたすべてのオリジンエントリを1つクリアする必要があります。次に、Web APIを使用するか、web.configを使用して、CORSを自分で管理できます。

情報はthe documentationでさえ提供されています:

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

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

+0

ありがとうございます!私はAzureでホストされているservicestackアプリでCORSを使って多くの問題を抱えてきました。 AzureのポータルからCORSの設定をすべて削除したことが判明しました。 –

+0

奇妙なことに、Azureのコードを無効にするにはトグルが必要です。すべてのサイトを削除するだけで無効になり、アプリに渡されます。起源が記載されていれば、所有しているその他のCORSヘッダーは削除されているように見えます。私は、サイトに入るとそれを可能にし、それが他のヘッダーにどのような値を使用するのかという何らかの説明が提供されるべきだと思います。私はそれが自動的にあなたのヘッダーを削除するための何らかのエラーや警告を与えるべきだと思うだろう... –

1

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

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

もっとここで読む:我々は最終的にAzureのアプリCORSミドルウェアの動作を理解するために管理http://enable-cors.org/server_iis7.html

+0

私はAzure Website CORSミドルウェアが、ホストされたアプリケーションによって設定されたすべてのCORSヘッダーを上書きすると考えていたので、私はこの方法に懐疑的でしたが、とにかくこれを試してみましょう。 –

+0

これは私が思ったことです。クライアントとアプリケーションサーバーの間にAzure Webミドルウェアがあり、サーバーによって設定されたCORS関連のすべてのヘッダーが破棄され、独自のものに置き換えられます。したがって、カスタム 'Access-Control- web.configファイルのCredentialsヘッダーは無効です。他のカスタムヘッダーは正しく追加されますが、CORSヘッダーは追加されません。 –

関連する問題