這不是真的與編程有關,但我在程序中使用它,所以我認爲最好在這裏問一下。本質上這是一個關於處理HTTP請求異常的問題。HTTP請求字段中的特殊字符
標準的請求可能是這樣的:
GET/HTTP/1.1
Host: example.com
User-Agent: Firefox
我的問題是,應該如何HTTP在通常不被篡改HTTP請求的部分處理「特殊字符」。例如,如果方法是「POST ME」而不是「GET」(即包含空格),該怎麼辦?這會被編碼爲%20嗎?
另一個例子,假設我希望我的一個頭文件是「Class:Test:example」,並在頭文件名稱中添加了「:」(頭文件的值爲「example」)。這會被編碼爲%3A嗎?
注意:這不是關於是否有任何Web服務器接受這種編碼;這是關於如何完成的。我的程序是一個模糊測試器,所以它應該測試這種事情!
沒錯,但我的問題不是它是否會在開放的互聯網上工作;它應該如何完成。如果我理解正確,沒有爲希望發送「POST ME」作爲HTTP方法的用戶定義任何編碼機制。 這不是第二個「:」我要編碼;這意味着當我希望頭*名*爲「Class:Test」時,頭值將是「Test:example」,值爲「example」。 是的,我知道我不是在這裏創建一個層次結構... – Rsaesha 2012-08-01 11:46:10
我確實理解你的問題。我只是試圖通過提到互聯網來解釋事情是如何工作的。 AFAIK「POST ME」的確是一個無效的請求方法名稱。所以你可以指定它,但不確定會發生什麼。那麼測試它的重點在哪裏?除了你正在尋找諸如緩衝區溢出之類的東西。但是在那種情況下,考慮「如何完成」再次沒有意義。標題名稱「Class:Test」無效。與上述相同的說法適用。 – arkascha 2012-08-01 11:49:10
他們沒有爲此定義編碼機制,因爲它根本沒有必要。他們已經有一種方法來創建多字頭名稱,並使用連字符作爲分隔符。爲什麼你需要在標題名稱中使用「:」?而不是「POST ME」,你可以使用「POSTME」或「POST-ME」。 – Barmar 2012-08-01 11:52:19