上周五,IESG( 互联网工程指导委员会 ( Internet Engineering Steering Group ) )批准了一个新的互联网标准,为 HTTP 增加了一个新状态码:451 Unavailable For Legal Reasons。还需要一点点工作就会发布为正式的 RFC ,不过现在已经可以用了。
缘起
几年前,英国政府要求 ISP 们对海盗湾的内容进行封挡,Terence Eden 就这个事情写了一个帖子,建议应该有一个不同的状态码来区分禁止访问的原因。这样的话,ISP 们就可以向他们的用户说明为什么这些资源不能访问。有人提议使用数字 451 作为状态码,也有各种其它的建议。
谷歌的 Tim Bray 受此启发,于前几年给 HTTP 工作组 HTTP Working Group 提交了一份提案,他(及很多人)认为应该将由于技术原因的不可见与非技术原因的不可见区分开来:
- 403 状态码,用于描述由于技术原因禁止访问
- 451 状态码,则用于描述由于国家法律所要求而禁止访问
据说,451 这个数字来源于 Ray Bradbury 的一篇小说《 华氏 451 ( Fahrenheit 451 ) 》。
发展
最初,对于这份提案,IETF HTTP 工作组的主席 Mark Nottingham 是拒绝的。因为 HTTP 状态码是有限的,虽然说从 400 到 499 有足足一百个位置,但是谁也不知道将来会有什么需求。而当时也没有任何需要让程序/机器来区分禁止访问的这两种情形,所以不应该浪费代码——最多,在 HTTP 首部或页面上呈现具体原因就可以了。
而 Tim 依旧坚持他的提案,并偶尔更新一下提案内容,和关心这件事的人谈论。
有一些站点开始实验性的使用这个状态码,不过这并不足以让 IESG 同意增加新的状态码。但是,随着网络上的审查的越来越多,比如欧盟政府要求 ISP 禁止对盗版内容的访问,而韩国、俄罗斯和其它一些国家会限制某些内容的访问等等,IESG 意识到网站需要能够区分这其中的不同。
此外,还有一些人希望能够自动找到和分类哪些内容是被审查的。这就需要一种机器可读的机制来区分 403 和 451 所代表的不同意义。
451 能做什么和不能做什么
虽然 451 状态码的原意是用于标示出哪些内容是被法律禁止访问的,比如可以用在网络设备上(比如防火墙)或 Web 服务器上。就目前已知的, Github、 Twitter、 Facebook 和 Google 都已经开始使用这个状态码来应对各个国家地区的审查要求了。
但是显然,451 状态码并不能标示出所有的被审查的内容,也许有些国家(比如英国)的法律要求不允许使用这个状态码。
本文内容编译自 Mark Nottingham 的博客、维基百科、Solidot 等来源。