[9] 
[DFN[[CODE(HTTP)[451]]]]
([DFN[Unavailable For Legal Reasons]])
は、[[法的]]な理由によって[[要求]]が拒否されたことを表す[[状態符号]]です。

* 仕様書

[REFS[
- [7] [CITE@en[RFC 7725 - An HTTP Status Code to Report Legal Obstacles]] ([TIME[2016-03-08 22:33:18 +09:00]] 版) <https://tools.ietf.org/html/rfc7725>
]REFS]

* 意味

[10] [CODE(HTTP)[451]] は、
[[資源]](群)に対するアクセスを拒否するよう、
[[サーバー]]運用者が[RUBYB[法的要求]@en[legal demand]]を受け取っており、
よって[[サーバー]]がアクセスを拒否することを表す[[状態符号]]です [SRC[>>7]]。

[8] [CODE(HTTP)[451]] は、
サーバー運用に[RUBYB[[[法令]]]@en[law]]や[RUBYB[[[公共政策]]]@en[public policy]]の問題が影響する状況で、
[[透過性]]を確保するために使うことができます [SRC[>>7]]。

[11] ここでいう[[サーバー]]は、[[起源サーバー]]に限りません [SRC[>>7]]。

[14] [CODE(HTTP)[451]] は、[[要求]]された[[資源]]が存在することも、
存在しないことも[[暗示]]しません [SRC[>>7]]。

[17] なお、当該[[法権力]]がアクセス拒否を明らかにしたくないなどの理由で、
[CODE(HTTP)[451]] を使わないこともあります。[[クライアント]]は法的な理由で拒絶されたとしても、
必ず [CODE(HTTP)[451]] [[応答]]が返されると期待することはできません。

* 構文

[16] [CODE(HTTP)[451]] を使う者は、
自身を識別する [CODE(HTTP)@en[[[Link:]] ...; [[rel=blocked-by]]]] 
[[ヘッダー]]を含める[SHOULD[べきです]] [SRC[>>7]]。

[12] [CODE(HTTP)[451]] を使う場合、
[RUBYB[法的要求]@en[legal demand]]の詳細
(要求した者、適用される[RUBYB[[[法令]]]@en[legislation]]や[RUBYB[[[規則]]]@en[regulation]]、
適用される人物や[[資源]]の[RUBYB[種別]@en[class]])
の説明を[[応答本体]]に含める[SHOULD[べきです]]。

;; [13] その具体的な方法は規定されておらず、 [[RFC]] には
[[HTML]] と[[英語]]で記述する例が示されています [SRC[>>7]]。

* 処理

[15] [CODE(HTTP)[451]] [[応答]]は、原則として[[キャッシュ可能]]です [SRC[>>7]]。

* 関連

[18] [[RFC]] は[[資源]]の側に法的問題がある場合に [CODE(HTTP)[451]]
を使うとしており、[[資源]]に問題がなく[[要求]]に問題がある場合に使うとはしていません。
そのような場合には [CODE(HTTP)[400]] が適切かもしれません。

[EG[
[19] 例えば[[政治的に正しくない][政治的に正しい]]発言が含まれる[[投稿]]を[[検閲]]により非表示とする場合には
[CODE(HTTP)[451]] [[応答]]を返すことができますが、新たに[[検閲]]対象となる[[投稿]]を受け付けることを拒絶する場合には、
[CODE(HTTP)[451]] は適切では無さそうです。
]EG]

* 歴史

** RTSP

[1] 451 引数理解不能

[FIG(quote)[
[FIGCAPTION[
[6] [[RFC 2326]] ([[RTSP]]) 11.3.2 451 Parameter Not Understood
]FIGCAPTION]

>The recipient of the request does not support one or more parameters
contained in the request.

要求の受信者が要求中に含まれる1つ以上の[[引数]]に対応していません。
]FIG]

** HTTP (Microsoft)

[FIG(quote)[
[FIGCAPTION[
[4] [CITE@en[List of HTTP status codes - Wikipedia, the free encyclopedia]]
([TIME[2015-12-18 20:29:30 +09:00]] 版)
<https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#451-MS>
]FIGCAPTION]

> 451 Redirect (Microsoft)
> Used in Exchange ActiveSync if there either is a more efficient server to use or the server cannot access the users' mailbox.'''['''68''']'''
> The client is supposed to re-run the HTTP Autodiscovery protocol to find a better suited server.'''['''69''']'''

]FIG]

** HTTP (IETF)

[REFS[
- [2] [CITE@en[draft-tbray-http-legally-restricted-status-00 - A New HTTP Status Code for Legally-restricted Resources]]
([TIME[2012-06-12 19:56:12 +09:00]] 版)
<http://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-00>
]REFS]

[3] [CITE@en[draft-tbray-http-legally-restricted-status-02 - A New HTTP Status Code to Report Legal Obstacles]]
( ([TIME[2013-01-24 04:19:34 +09:00]] 版))
<http://tools.ietf.org/html/draft-tbray-http-legally-restricted-status-02>

[5] [CITE@ja[本の虫: HTTPステータスコード451(政治的な検閲)が正式に承認される]]
([TIME[2015-12-20 13:48:47 +09:00]] 版)
<http://cpplover.blogspot.jp/2015/12/http451.html>

* メモ

[20] [CODE(HTTP)[451]] が必要な場面として[[中華人民共和国]]のような厳しい[[検閲]]を行う[[国家]]で運営される[[サーバー]]が真っ先に思い浮かびますが、
そうした政治的、思想的な統制の厳しくない地域でも、提供するサービスによっては日常的に必要なことがあるかもしれません。

[21] 例えば、 [[UGC]] サービスでは、
[[著作権法]]違反の疑いがあると[[著作権者]]から申し立てを受けた場合、
[[児童ポルノ]]であると[[政府機関]]等から削除要請を受けた場合、
投稿ガイドラインに掲げる禁止行為に該当するとサービス提供者が判断した場合などに、
[CODE(HTTP)[451]] を使うことができます。


[22] [CITE@en[1190136 – Firefox should decide whether reuse connection separately for IPv4 and IPv6]]
( ([TIME[2016-05-08 22:26:16 +09:00]]))
<https://bugzilla.mozilla.org/show_bug.cgi?id=1190136>

[FIG(quote)[
[FIGCAPTION[
[23] [CITE@en[The 451 status code is now supported | GitHub Developer Guide]]
([TIME[2016-07-30 05:30:39 +09:00]])
<https://developer.github.com/changes/2016-03-17-the-451-status-code-is-now-supported/>
]FIGCAPTION]

> The GitHub API will now respond with a 451 status code for resources it has been asked to take down due to a DMCA notice. 

]FIG]


[24] [CITE@en[draft-451-new-protocol-elements-00 - New protocol elements for HTTP Status Code 451]]
([TIME[2017-10-25 17:22:06 +09:00]])
<https://tools.ietf.org/html/draft-451-new-protocol-elements-00>