#冷知識 其實我是個茶壺……(內有貓貓)
除了開箱各種科技產品,我也喜歡蒐集冷知識,覺得可以分享一些給大家。既然是工程師,就從一些工程師的冷知識開始好了。
今天分享的內容,對軟體工程師來說可能不是冷知識,因為它算是惡搞 RFC 裡最著名的一個,那就是「超文字咖啡壺控制協定」。
如果你不知道那是什麼,請聽我娓娓道來。
▋ HTTP 狀態碼
HTTP 是你我日常都會接觸到的東西,至少你應該在網址開頭看過它。做 HTTP 請求的時候,比如你點開了一個網頁,網頁伺服器會回傳一個數字,那個數字就是「狀態碼」。
最廣為人知的狀態碼應該就是「404 Not Found」,因為早期網頁(也許現在有些也是)碰上找不到內容的時候,會直接顯示「404 找不到」。
(之前出國到了旅館正好分到 404 號房,然後看見這樣的景象)
但其實這類狀態碼還有很多,例如正常情況的「200 OK」,代表請求成功;但對一般使用者來說,看到的就是預期的網頁的內容,所以就少了點存在感。
這部分真要解釋的話可能會枯燥,所以我決定直接放貓貓。
400 請求錯誤
401 沒有權限
404 找不到
406 無法接受
409 發生衝突
414 URI 太長
417 預期結果失敗
426 需要升級
429 過多的請求
500 伺服器錯誤
所有的貓貓們來自這裡:
貓貓們看起來很萌,但這些代碼都是工程師會用到的正經規格。
不過……
規格裡有個 418 「我是茶壺」是怎麼回事?
▋ 超文字咖啡壺控制協定
故事發生在 1998 年 4 月 1 日,網際網路國際標準機構 IETF 發佈了「RFC 2324 標準」,定義了「超文字咖啡壺控制協定」(HTCPCP);至於是怎麼一回事,看日期應該能知道。
這個協定被設計為一個類似 HTTP 的協定,可以用於控制、監測和診斷咖啡壺。
技術上來說,HTCPCP 是 HTTP 協定的擴充。HTCPCP 請求通過 URI 架構 `coffee:` 來參照,並還包含了這幾種 HTTP 請求:
- BREW 或 POST:請求咖啡伺服器煮咖啡。
- GET:從伺服器取得咖啡。
- PROPFIND:取得咖啡的 metadata。
- WHEN:讓伺服器停止向咖啡中加入牛奶(如適用)。
而這個協定也定義了兩種伺服器回覆的錯誤狀態碼:
- 406 無法接受:咖啡伺服器由於某種原因而暫時不能煮咖啡。
- 418 我是茶壺:這是當一個茶壺被下達煮咖啡指令時的回覆。
▋ 看似玩笑卻又認真(嗎)
雖說這個協定看起來單純是個玩笑,但官方每次推出愚人節玩笑,都會讓這個協定看上去像是一個真的、非虛構的協定,以至於它跟其他認真的規格一樣,被記載在工程師會看見的各式規格書中。
也曾經有人提出 bug 回報,抱怨說 Mozilla 不支援這個協定。
▋ 後續發展
在 2014 年 4 月 1 日,發布了 RFC 7168,是此協定的擴充,正式支援茶壺。(還來啊)
——————————
如果你喜歡這篇文章,請點一下愛心及右上角的追蹤按鈕!
追蹤我的 Instagram:
看更多文章:

https://dcard.tw/@hiking
dcard.tw
