2009-02-06 14 views

回答

8

如果您正在設計自己的自定義擴展字段,則可以使用BASE64或quoted-printable來轉義(和unescape)該值。

+0

+1 - 意味着你不必擔心超出界限的字符,正在使用什麼字符編碼等。封裝這些東西的RFC822原生方法是可怕的,脆弱的,並且通常不會工作HTTP。 – bobince 2009-02-06 19:27:08

1

如果這是一個自定義字段如何轉義,它完全取決於目標應用程序將如何解析它。如果這是你創建的一些附加內容,你可以堅持使用URL編碼,因爲它很好用,很多語言都內置編碼/解碼方法,所以你的Web應用會對它進行編碼和插入(或者你正在工作的任何東西)會解碼它。

3

根據RFC2616 4.2 Message Headers: -

報頭字段可以由每個額外 線前述與至少一個SP或HT延伸超過 多行。

我假設SP表示空格字符,HT表示硬標籤字符。

+2

不要指望你的應用可能會得到解析版本的新行;這種機制歷史上只存在於RFC822中,用於將長標題行折成80個字符。 – bobince 2009-02-06 20:46:55

5

的想法是,HTTP是ASCII - 和換行,並如不允許。如果發送者和接收者都可以解釋你的編碼,那麼你可以編碼任何你想要的,但是你想要的。這就是DNS國際名稱如何使用Host標題(它被稱爲PUNYCODE)處理。

簡短的回答是:你不這樣做,除非你控制發送者和接收者。

3

這個問題的實際答案是編碼換行沒有標準。

您可以使用任何Binary-to-text encoding,如URL編碼或Base64,但很明顯,只有發送方和接收方都實現相同的方法才能工作。


RFC 2616確實允許到所解析的字段值的「摺疊」在多行(即套)報頭的值,但換行被視爲單個空格字符和不一部分。

然而,說明書已過時由RFC 7230即禁止摺疊:由每個額外的行前述與至少一個空間或水平製表

在歷史上,HTTP報頭字段值可以被擴展到多行obs-fold)。
本規範棄用此類行折,除message/http媒體類型Section 8.3.1
發件人必須不產生一條消息,包括線摺疊

一種用於在HTTP報頭字段值換行符標準不是 - 永不被 - 成立。

相關問題