2012-01-25 22 views
1

我正在閱讀HTTP 1.1 RFC,我無法回答以下問題。我可以使用逗號分隔所有HTTP標頭嗎?甚至授權?

我們有這樣的標題:

Authorization: Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic 

這是造成麻煩,因爲Rails 3的授權解析器因爲「」字符的字符串譯碼錯誤。這是非常罕見的,我知道,但我們添加這個使用這個Apache的httpd配置:

RequestHeader append Authorization "Basic" early 

Apache mod_header documentation說:

響應報頭被附加到同一 名稱的任何現有的頭。當一個新值被合併到一個現有的頭上時,它是用逗號與現有頭分離的 。這是爲標題提供多個值的標準方式。

但我不認爲這是授權標題正確。 RFC定義不允許這樣做。但是一些頭文件允許用逗號分隔的列表。我不確定這是否是所有HTTP標頭的一般規則。

我是在HTTP 1.1 RFC中尋找一段可以證明我的想法不正確。我已經發現了一些說「這僅適用於可以分開的標題」,但這不是一個證明。

具有相同字段名的多個消息的報頭字段可以出現 在消息當且僅當該頭 字段整個字段值被定義爲逗號分隔的列表[即,# (值)]。它必須 可以通過將每個後續字段值附加到第一個,每個 分隔的一個 「字段名稱:字段值」對,而不更改消息的語義,可以將多個標題字段組合到一個 「逗號。因此,接收到字段名相同的標題字段的順序對於組合字段值的解釋 有意義,因此當轉發消息時,代理不得更改這些字段值的 順序。

它確實沒有意義,但我正在尋找一個明確的證據。

回答

2

答案就在你引用的文字:

「多用相同的字段名消息頭域可以在消息當且僅當被定義爲報頭字段整個域值作爲逗號分隔的列表[即,#(值)]。「。

這不是「授權」的情況。

+0

那麼我無法找到其他任何東西。看起來這是在睡了7個小時之後:-) – lzap