-2

ログイン ダイアログ ボックスの下のコードを実行しようとすると、ログイン エラーが発生し、資格情報が無効なため、不正なアクセスが拒否されます。

    protected void Application_EndRequest(object sender, EventArgs e)
    {
        //verify that resquest is for api
        if (Request.Path.ToLower().StartsWith("/api/v1"))
        {
            if (Response.StatusCode == 302)
            {
                Response.StatusCode = 401;
                Response.ContentType = "application/json";
                Response.ClearContent();
                Response.Write("\"fail\"");
            }
            else if (Response.StatusCode == 500)
            {
                Response.StatusCode = 500;
                Response.ContentType = "application/json";
                Response.ClearContent();
                Response.Write("\"server error\"");
            }
        }
    }
4

1 に答える 1

1

HTTP コード 401 は「無許可」を意味します。ブラウザーがこのエラー コードを受け取ると、ユーザーがログインする必要があるためと見なされます。ブラウザーにログイン ダイアログが表示され、指定されたログインの詳細で再試行されます。

これはまさに起こるべきことです。

単純にリクエストを拒否したい場合は、HTTP コード 403、「禁止」の後にいます。

ただし、実際にここで達成しようとしている理由は明確ではありません。独自のサーバー コードが HTTP 302 (リダイレクト) を返す場合、なぜそれを HTTP 401/403 などに変換しようとしているのですか? なんらかの理由でリダイレクトを実行したくない場合は、そもそもリダイレクトを発行しないでください。

于 2013-07-17T14:08:12.693 に答える