分類
程式技術

Referer參數的最大長度

在分析網站記錄時, 很常用的一個資訊就是來源參考, 也就是 http reqeust header 中的 referer, 我們先來看看 rfc 的規格:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.36

在 rfc 內並未對此進行規範, 也就是說, 沒有限制該參數的最大長度限制, 這樣看來應該從 url 的最大長度來看, 接下來我們再來看看相關的 rfc 資料:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.2.2
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23

發現也都未規範這個內容, 也就是長度並未特別限制, 其實 rfc 並不定義實作規格, 僅定義概念規格, 所以我們也就看看就好.
接下來要查的就是瀏覽器的規格了, 因為瀏覽器是實作出 http client 的一個軟體, 理論上限制就會出現, 這篇文章提到了這點

http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427

看起來最大長度為 2083(path 部分是 2048), 那理論上 ie 在轉出 referer header 時, 應該最大不會超過這個 size 了, 再繼續查相關資料, 大部分的 referer 最大長度參考數據都不一致, 所以原則上我們就拿這個來參考好了.

再來看一些有趣的資訊, tt 在這個版本的 {$database[‘prefix’]}RefererLogs 的 url 欄位, 長度是 varchar(255), 所以理論上在記錄時會有一些問題, 也就是寫入長度不足的狀況, 再繼續追蹤 tt 的程式碼, 其實它也沒有截字串的長度, 所以理論上會有上面的問題.

不過就算要有這麼長的網址也不是那麼容易的, 而且在現在講求 SEO (搜尋引擎優化服務SEO (Search Engine Optimization)) 的網址需求下, 除非是要故意複雜化網址, 否則應該也不會有這麼長的網址才是.

供各位在尋求 Referer, Url 最大長度時的參考.

在〈Referer參數的最大長度〉中有 2 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *