Nitrogen 的 Cookie

當我在 Nitrogen 框架裡,在網頁中讀取 Cookie 時,遇到底層 simple_bridge 的錯誤。錯誤訊息開頭寫 {badrecord, context} 。

對於這一則錯誤,上網只能查到一二則相關的討論。意思講得很精簡,說讀取 Cookie 的時機,須是在網頁載入的時候。

而我的網站是單頁應用。 (Single-page application)

對於這個問題,我感覺 Nitrogen ,或者說許多 Linux 或開放原始碼風格的程式寫作方式,都是以懶居多,只讓正確的功能順利執行,而讓執行錯誤的情況如同裸線一般揭露。

後來,當我在練習 Cookie 的使用時,發現由 Cookie 值中帶有空白,就觸發另一個錯誤。錯誤位置是發生在 cowlib 的 cow_cookie.erl 中。是當它檢查 Cookie 值有沒有包含空白等一些限定文字時,程式寫成直接判斷是否 nomatch 。

nomatch = binary:match(iolist_to_binary(Value), [$\s, … ]),

用到如此嚴格的判斷,只要不符合,就會印出在此處遭遇執行錯誤。

後來查看 RFC 討論網頁的狀態,的確定義了 Cookie 值的語法須迴避 ASCII 裡頭的控制文字,而只接受其他非控制並可顯示的文字。

這一段經驗,使我感覺到,軟體工程師的知識,是存在於一場開放體系中,並且知識是散亂的,需要由經驗來主導知識的學習,甚至是知識的獲取。

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Erlang, Web Programming。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s