限制Apache2.4請求頭

限制Apache2.4請求頭

我試圖將虛擬主機的請求標頭限制為僅POST,HEADGET。到目前為止,我所做的是.htaccess為我的虛擬主機建立一個並輸入以下內容:

<LimitExcept GET HEAD POST>
    Require valid-user
</LimitExcept>

問題是<LimitExcept>顯示一個錯誤,顯示not allowed here,所以我嘗試使用,<Limit>但結果是相同的錯誤。我還嘗試將它們移動到我的虛擬主機.conf文件中,但仍然是錯誤。我不明白的是,在官方文件中它說它允許在那裡,但在我的伺服器中卻不允許。

答案1

如果您嘗試僅允許 GET、POST 和 HEAD 方法,那麼這應該可以正常工作:

<Directory "/path/to/documentroot">
    Require method GET POST HEAD
</Directory>

您需要將此配置放入您的 VirtualHost 中。

編輯: 若要回答評論中的其他問題(如何僅對 POST 請求啟用密碼驗證),可以透過以下指令來實現(您可以將其放入 /path/to/your/directory/.htaccess 中):

<RequireAny>
     AuthUserFile /path/to/your/.htpasswd
     AuthName "Login"
     AuthType Basic
     Require method GET HEAD
     Require valid-user
</RequireAny>

這將允許 GET 和 HEAD 方法,但 POST 請求會觸發身份驗證。

答案2

2.4 有一個專門的模組用於此目的,稱為 mod_allowmethods,並且在 2.4 中不鼓勵使用 Limit/LimitExcept。確保加載模組並在適當的虛擬主機中添加以下內容:

# documentroot dir in virtualhost
<Directory /path/to/dir>
     AllowMethods GET HEAD POST
     Require valid-user
</Directory>

您還可以在伺服器配置中將其全域定義為所有內容,就像我在下面描述的那樣。

***注意,這是/ 在您的檔案系統中,因此您應該拒絕此處的訪問,並允許在特定目錄(例如documentroot 或別名目錄)中訪問,但允許方法會進一步向下傳播,除非您稍後覆蓋它。

<Directory />
    Require all denied
    AllowMethods GET HEAD POST
</Directory>

相關內容