HTTP 451

HTTP錯誤代碼

HTTP 451HTTP协议中的一个状态码。HTTP 451的描述短语是“Unavailable For Legal Reasons”,当用户请求访问某个经政府审核等查核方法后认定不合法的来源时,就会显示这个错误代码。

该状态码定义于RFC 7725中,与HTTP协议其他的状态码不同。

定义

 
Google Chrome内置的HTTP 451界面

根据定义,HTTP 451错误代码状态出现,不代表这个地址是否存在,而代表该网页可能违反基于法律违规主张的要求。

该响应代码有如下的性质:

  • 除非另外指明,否则这个响应代码是可以被缓存的。
  • 必须携带一个带有一个Link头部,列出要求封禁该地址的实体URI;且应带有一个"rel"字段,值应为"blocked-by"[1]

引入

本代码于2013年由提姆·布雷(Tim Bray)正式提出,主要基于博客Terence Eden的文章所提出的非正式提案[2]。2015年12月18日,此代码由国际网络工程研究团队英语Internet Engineering Steering Group通过[3]

451这个代码源于1953年的反乌托邦小说华氏451度》(纸的燃点为华氏451度),在这部小说中,所有书籍是违禁品[4]。相比较HTTP 403404代码,451可更好描述一种由于法律规定或受权威部门要求而导致的封禁状态[5]

演示示例

 
HTTP 451的示例。该网页屏蔽欧洲经济区(European Economic Area)用户,以避免适用当地的欧盟一般资料保护规范(General Data Protection Regulationm, GDPR)法律。

在本章节中,将对于HTTP 451的响应的返回、缓存的设置和Link头部的设置做出范例。

某地一用户以GET方式请求example.org的/index.php路径:

GET /index.php HTTP/1.1
Host: www.example.org

服务器响应

由于用户所在地的某项法律规定,网站不可以向该地区用户返回这个页面,所以服务器做出回应,设置了有效期为一年的缓存头部,并在Link头部中加入了指定的法律文本URL“http://www.xxx.gov.tld/law.html”:

HTTP/1.1 451 Unavailable For Legal Reasons
Link: <http://www.xxx.gov.tld>; rel="blocked-by"
Cache-control: max-age=31536000; public
Content-Type: text/html; charset=utf-8

<html>
<head><title>因法律原因不可用</title></head>
<body>
<h1>HTTP/1.1 451 因法律原因,本页面不可用</h1>
<p>根据《某法》第某条之规定,本网站页面对来自某地的访客不可用。</p>
</body>
</html>

非服务器实体

根据RFC文档第3节和第4节,作出回应的服务器不一定是源服务器,也可能是ISP或其他实体的服务器向用户返回HTTP 451。该文档第四节进一步说明,回应中的blocked-by对应之头部应链接至实际执行此次封锁的实体,而不是作出决定的实体。假设某网络主管部门要求这些运营商的防火墙服务器对所有访问某站点特定内容之请求均返回451,则防火墙服务器可以这样回应用户:

HTTP/1.1 451 Unavailable For Legal Reasons
Link: <https://www.isp-firewall.tld/about.html#filtered_by_451>; rel="blocked-by"
Cache-control: max-age=86400; public
Content-Type: text/html; charset=utf-8

<html>
<head><title>因法律原因不可用</title></head>
<body>
<h1>HTTP/1.1 451 因法律原因,本页面不可用</h1>
<p>应有关部门要求,根据相关法律、法规,网页未予显示。</p>
</body>
</html>

现实案例

Github

 
GitHub对赵家人项目返回的HTTP 451状态码

2016年6月8日,中国网络空间安全协会用英文致信GitHub,称其平台上的开源项目“Zhao”诽谤现任中国共产党中央委员会总书记习近平,要求立刻删除。三天后,GitHub在专门公布各国政府发出的移除要求的版面上,公布了这封信件[6][7]

据信件所描述,GitHub用户Programthink创建的代码仓库“Zhao”中出现了一篇用户名为“CMB-news”的帐号发布的“问题”(Issue),声称习近平涉及一桩命案[8],故引发相关部门“强烈关切”。根据GitHub公布的信息显示,这是2014年10月以来,GitHub公布的第6项“删除特定项目要求”,也是第一个来自中国政府相关方请求,此前5项都来自俄罗斯[9][需要非第一手来源]

后来,GitHub对于访问该仓库的中国大陆用户返回451代码,并链接向上述投诉信件;但在海外的用户仍能顺利打开。 GitHub给出的原因是“这个项目被中国政府列入黑名单”[注 1]。GitHub称,虽无法认同政府审查,但为让更多人可以正常使用网站服务,他们会在确认有关要求来自政府之后,在指定区域内满足政府的要求,同时会公开来自政府的要求文件[7]

参见

注释

  1. ^ 原文:Repository unavailable because of the Chinese Internet Blacklist

参考文献

  1. ^ RFC 7725 - An HTTP Status Code to Report Legal Obstacles. datatracker.ietf.org. [2017-08-06]. (原始内容存档于2018-09-14) (英语). 
  2. ^ Byrne, Michael. The HTTP 451 Error Code for Censorship Is Now an Internet Standard. Vice. 2015-12-21 [2015-12-21]. (原始内容存档于2015-12-22). 
  3. ^ Why 451?. 2015-12-18 [2015-12-20]. (原始内容存档于2015-12-29). 
  4. ^ Flood, Alison. Call for Ray Bradbury to be honoured with internet error message. The Guardian. 2012-06-22 [2012-06-22]. (原始内容存档于2012-06-22). 
  5. ^ Ducklin, Paul. HTTP error code 451: "Unavailable For Legal Reasons". Naked Security. Sophos. 2013-08-19. (原始内容存档于2016-02-20). 
  6. ^ gov-takedowns: Text of government takedown notices as received. GitHub does not endorse or adopt any assertion contained in the following notices. Github. GitHub. 2017-08-01 [2017-08-06]. (原始内容存档于2019-02-16). 
  7. ^ 7.0 7.1 吴嫱. 開源「趙家人」名單,GitHub激怒中國網安協會首出拳. 端传媒. 2016-06-28 [2023-02-10]. (原始内容存档于2020-03-27). 
  8. ^ Horwitz, Josh. China’s fierce censors try a new tactic with GitHub—asking nicely. Quartz. [2022-03-21]. (原始内容存档于2022-03-26) (英语). 
  9. ^ gov-takedowns: Text of government takedown notices as received. GitHub does not endorse or adopt any assertion contained in the following notices. GitHub. GitHub. 2017-08-01 [2017-08-06]. (原始内容存档于2017-09-12). 

外部链接