403

状態符号 403 (HTTP)

[415] 403 (Forbidden) は、要求の処理が禁止されている (アクセス権限がないと判断された) ことを表す状態符号です。

仕様書

意味

[409] 403 は、要求を理解したものの、 それに権限を与えることを拒絶したことを示します >>407

[9] 常に失敗するので反復するべきでないことを暗示しています >>8

[10] 修正して反復すれば成功するかもしれない時は 409 を使えます >>8

構文

[410] は、要求が禁止された理由を公開したい場合は、 その理由を payload で説明できます >>407

[7] payload body には DAV: 名前空間error 要素を使うことができます >>6

[12] WebDAV は、適切な事前条件符号事後条件符号があれば XML を返すべきです。それ以外のエラーでは空の payload body を返しても構いませんし、独自の要素を使ってエラーを表しても構いません。 >>11

[13] 次の事前条件符号事後条件符号があります。

文脈

[2] は、要求に妥当な credentials が含まれていて、 なお適切なアクセス権を有しない場合には、 403 応答を返すべき (ought to) です >>1

[3] 非妥当な credentials (誤ったパスワードなど) が含まれている時や、 credentials が含まれていない時には、 401407 を使うべきです。

[5] HTCPCP-TEA において Accept-Additions: ヘッダーで指定された添加物の組み合わせが不適切とみなされる時は、 403 応答を返すことができます >>4

[15] 要求payload bodyXML 外部実体参照が含まれており、 がこれを拒否したい時は、 403 状態符号no-external-entities 事前条件符号を使うことができます >>14

422 では無いようです。

[17] PROPFIND 要求Depth: infinity となっており、これに対応していない時は、 403 応答事前条件符号 propfind-finite-depth を返すべきです >>16

[21] PROPFIND 要求に対する 207 応答内の status 要素では、 認証によらず特性を表示できないことを表すために使うことができます >>16

[20] PROPPATCH 要求に対する 207 応答内の status 要素では、 何らかの理由での変更の拒否を表すために使うことができます >>18

[19] PROPPATCH 要求によって保護特性を変更しようとした時は、 状態符号 403事前条件符号 cannot-modify-protected-property を使うべきです >>18

[23] MKCOL 要求で指定された URLコレクションを作れない時や親となるコレクションが追加を受け付けていない時は、 403 応答を返します >>22

[24] 親となるコレクションが存在しない時は 409 応答が使われます。

[26] COPY 要求 >>25MOVE 要求 >>27 の始点と終点が同じ資源の時、 403 応答を返すことができます。

[29] UNLOCK 要求によってロックを破棄する権限が無い場合、 403 応答を返すことができます >>28

処理

[411] 要求credentials が含まれていた場合は、 がアクセスを認めるのには不十分と判断したことを示していますから、 クライアントは同じ credentials要求を繰り返すべきではありません >>407

[412] クライアントは別の credentials要求を繰り返しても構いません。 ただし禁止されたのは credentials 以外の理由かもしれません。 >>407

歴史

[408] RFC 1945 (HTTP/1.0); RFC 2068 & 2616 (HTTP/1.1) 10.4.4 403 Forbidden

The server understood the request, but is refusing to fulfill it. Authorization will not help and the request {1945} should not SHOULD NOT be repeated. If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, it {1945} should SHOULD describe the reason for the refusal in the entity body. {1945,2068} This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable. {2616} If the server does not wish to make this information available to the client, the status code 404 (Not Found) can be used instead.

サーバーは要求を理解しましたが、これを満たすことを拒否しています。 認証は助けとならず、要求を繰り返すべきではありません。 要求 method が HEAD ではなく、 サーバーがなぜ要求が満たされなかったのかを公表したいと思うのであれば、 応答の実体本体において拒否の理由を説明するべきですこの状態符号は、サーバーが要求を拒否した実際の理由を晒したくないと思っている時や他の適当な応答がないときに広く使われています。 サーバーがこの情報をクライアントに知らせたくないと思うときは、代わりに状態符号 404 (見つかりません) を使うことができます。

[405] RFC 7168 - The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA) ( ( 版)) <http://tools.ietf.org/html/rfc7168#section-2.3.2>

[406] RFC 7252 - The Constrained Application Protocol (CoAP) ( ( 版)) <http://tools.ietf.org/html/rfc7252#section-5.9.2.4>

関連

[413] 起源鯖は、対象資源の存在をも隠したいときは、 403 ではなく 404 を使っても構いません >>407

[414] 禁止の理由が credentials が正しくないこと、あるいは credentials が与えられていないことの場合は、 401 を使うことができます。

[30] IIJmioクーポンスイッチAPI | クーポンについて | IIJmio ( 版) <https://www.iijmio.jp/hdd/coupon/mioponapi.jsp>

403 X-IIJmio-Authorization is not found X-IIJmio-Authorization ヘッダが指定されていなかった

403 X-IIJmio-Developer is not found X-IIJmio-Developer ヘッダが指定されていなかった

403 Your application is not registered X-IIJmio-Developer ヘッダに指定されたデベロッパIDが登録されていなかった(間違っている)

403 User Authorization Failure X-IIJmio-Authorization ヘッダに指定されたアクセストークンでの認証ができなかった(再認証が必要)

[31] JSON Mail Access Protocol Specification (JMAP) ( 版) <http://jmap.io/spec.html>

403: Restart authentication

The Authorization header was missing or did not contain a valid token. Reauthenticate and then retry the request. There is no content in the response.