HTTP 451

HTTP錯誤代碼

電腦網絡領域中,HTTP 451 因法律原因不可用(英語:HTTP 451 Unavailable For Legal Reasons)是一種HTTP協定的錯誤狀態代碼,當用戶請求存取某個經政府審核等查核方法後認定不合法的來源時,就會顯示這個錯誤代碼。

該狀態碼定義於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). 

外部連結