2015-10-15 24 views
12

ASP.NET MVCとAngularJSを使用してサンプルアプリケーションを開発中です。ASP.NET MVCコードで角度js AJAX呼び出しを確認

サーバサイドのコードでは、アクションフィルタ属性を記述しました。要求が通常のリクエスト(ブラウザ)かAJAXリクエストかどうかを確認する必要があります。

public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    if (filterContext.HttpContext.Request.IsAjaxRequest()) 
    { 

    } 
} 

上記のコードに記載された方法「IsAjaxRequest()」AJAXリクエストの場合にtrueを返すされていないが$ HTTPを角度サービスを使用して作製しました。

リクエストにX-Requested-Withヘッダーがなく、ヘッダーを追加しても要求が解決しなかったことがわかりました。

注:これはCORSコールではありません。

私の質問です。

  1. どうfilterContext.HttpContext.Request.IsAjaxRequestは()要求がAJAXであるかどうかを決めるのですか?

  2. リクエストヘッダー(ヘッダーがあるかどうか)を確認し、リクエストがAJAXであるかどうかを判断できます。それは正しい唯一のアプローチですか?

+1

から欠落している理由あなたが見ることができ、すべての要求

app.config(['$httpProvider', function ($httpProvider) { $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest'; }]); 

については

個々の要求

$http.get('/controller/action', { headers: { 'X-Requested-With': 'XMLHttpRequest' } }); 

:https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/AjaxRequestExtensions.cs –

+0

@Keith Rousseauリンクが私に役立つはずです – refactor

答えて

18

X-Requested-Withヘッダーが存在するかどうかを調べて判断します。 X-Request-Withヘッダーを$httpサービスに手動で追加することができます。オープンソースだとあなたは、実際の実装を見ることができるということだけFYI Angular

+0

実際には、ヘッダーを追加しましたが、ヘッダーの値に「XMLHttpRequest」の代わりに「true」という問題がありました。なぜ神がその値を与えたのかを知っています:)。 リンクも役立ちます。おかげさまで – refactor

関連する問題