2009-07-15 11 views
1

RESTful URLパターンを使用するWebアプリケーションがあります。現在、ユーザーが認証が必要なページにアクセスしようとすると、何も返されません。この場合、HTTPステータスコードを返すことをお勧めしますか?私は403または別のものを使用しますか?認証が必要なコンテンツのREST httpステータスコード?

+0

RESTはURIパターンとは関係ありません。 「RESTful URLパターン」はまったくナンセンスです。あなたのAPIは単にRPCだと思う。 – aehlke

答えて

3

HTTPステータスコードで応答を送信する必要があります。

私は仕様はこのステータスコードを指定しているが、バックを禁止403を送信しません:

サーバーは要求を理解したが、 は、それを満たすために拒否しています。 承認は助けにはなりませんし、 要求が代わりに

戻り401権限ステータスコードを繰り返されるべきではありません。ステータスコードの詳細はこれを参照してください。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

私はニュージャージーでこれを行う方法は、例えば、ステータスで応答を送信して、人間が読めるメッセージを含む文字列エンティティを含めることです

Response response = Response.status(Status.PRECONDITION_FAILED).entity(
        new String("Incorrect " + id + " [" + id + "]")).build(); 

これはクライアントに表示されます。このレスポンスをラップするJersey WebApplicationExceptionをスローします。

+0

ありがとうジョン、これは最も有用だった。 –

1

権限がない場合は、認証チャレンジに応答する機会を与えるために401を返し、必要がない場合は403を返します。

Restlet 1.1以降では403が返されますが、以前のバージョンでは401が返されますが、必ずしもそれ以上に役立つとは限りません。

0

です。あなたはまさに何かを返すべきです、まさにまともなクライアント経験を持つことです。その時点で認証を受ける機会を与えたい場合は、401を返すことができ、クライアントは標準認証を使用して資格情報を渡すことを知ります。しかし、他のメカニズム(ログインURLの一部とCookieなどを設定)によって認証された方がよい場合は、おそらく403を返すことをお勧めします。

0

lol ...私が作成したばかりのREST API実装では、「さようなら」を読むレスポンスボディで401状態コードを返しました。最初に、APIとやりとりする人が最初に不平を言ったのですか?私はまだ「さようなら」がそれをすべて言ったと思う。 )

関連する問題