11

ASP.NET MVC 5 を使用して、jQuery で処理するよりも、さまざまなシナリオ (ユーザーが認証されていない場合は 401、ユーザーがリソースに対する権利を持っていない場合は 403 など) に対して適切な HTTP ステータス コードを返したいと考えています。

しかし、問題は、401 を返そうとすると、常に「302: Found」が返されることです。カスタム ステータス コードのトリックは何ですか? また、これが機能しないのはなぜですか?

public ActionResult My()
{
    if (User.Identity.IsAuthenticated == false)
    {
        return new HttpStatusCodeResult(401, "User is not authenticated."); 
            // Returns "302: Found"
    }

   // ... other code ...
}

編集 1: 興味深いビット:

401 を次のように 404 に置き換えると:

return new HttpNotFoundResult("User is not authenticated.");

その後、実際に 404 が返され、jQuery が問題をキャッチできます。ただし、エラー コードが異なるため、エレガントな解決策ではありません。

EDIT 2:結果は で使用されるため、302 は私には適していませんjQuery.get().fail()が、302 はトリガーしません。fail()

4

1 に答える 1