4

別のドメインの .NET Web API に実装された API と対話する必要がある AngularJS フレームワークを使用する単一ページ アプリケーションがあります。

問題

API は .NET Web API で実装されています。API にアクセスするユーザーを認証するために、MVC シングル ページ アプリケーション テンプレートを実装しました。これは、FormsAuthentication を使用して API へのアクセスを許可します。

デバッグには Fiddler を使用しました。ブラウザーで直接認証が必要な API のコントローラーにアクセスすると、ユーザーが実際に認証されていることを確認できました。XMLHttpRequest を実行したとき、疑わしいように、ヘッダーで認証 Cookie が送信されませんでした。

ここで実現したいことは、FormsAuthentication を使用して、できれば XMLHttpRequests を介して .NET Web API にアクセスすることです。

これに対する提案された解決策の 1 つは、.NET Web API と MVC の間でセッションを共有することでした。.NET Web API とプロジェクトの MVC 部分の間で状態を簡単に維持するにはどうすればよいでしょうか?

RESTful ではないことはわかっていますが、この問題を迅速に解決する必要があります。

PS!FormsAuthentication は、[Authorize] 属性を使用して .NET Web API コントローラーと連携します。コントローラーが XMLHttpRequests でアクセスできないことだけです。

XMLHttpRequest 使用時のフィドラーのスクリーンショット

XmlHttpRequest

リクエストがブラウザで直接行われたときのフィドラーのスクリーンショット ブラウザで直接

テストする認証コントローラーのスクリーンショット 認証コントローラー

4

1 に答える 1

0

これはCORSリクエストです。Microsoft.AspNet.WebApi.Cors ライブラリを使用できます。

webapi configASP.NET WEB API で CORS を使用するには、1 行追加するだけです。

config.EnableCors("*","*","*");

詳細はこちらをご覧ください。

于 2013-09-10T06:16:47.577 に答える