2017-10-07 201 views
0

requestPathInvalidCharacters指定無效字符列表,這將觸發400 Bad Request響應。默認情況下,該列表包含:"<,>,*,%,&,:,\\,?"。這包括問號和反斜槓。但據我所見,這兩個角色永遠不會被視爲無效。如何使用問號或反斜槓觸發400錯誤請求

第一個問號後面的每個URL字符都將用在查詢字符串中。所以像/path?foo?bar這樣的URL被認爲是有效的。在這個例子中,查詢字符串由單個無鑰匙值foo?bar組成。即使/?????是有效的網址。

反斜槓自動轉換爲正斜槓,所以我不明白這些可能被認爲是無效的。

回答

0

只是%會觸發錯誤。例如。 GET /% HTTP/1.1,因爲這是一個不完整的請求。

例如: https://stackoverflow.com/%

一些其他字符也引發400個迴應,但您的瀏覽器會自動轉換它們。概念驗證:

% curl -i 'http://stackoverflow.com/<' 
HTTP/1.1 400 Bad Request 
+0

我知道'%'和'<'可以觸發400個響應,默認情況下它們在'requestPathInvalidCharacters'中。但爲什麼那裏有'?'和'\\'?他們如何觸發400個迴應? –

+0

這是一個猜測,但我假設他們符合條件:'?'是請求查詢的一部分,而不是路徑。我對'\\\'的唯一猜測是RFC2396將它定義爲需要由於作爲分隔符而進行轉義,並且它不是有效的。 – Vetsin