安全(HTTP 方法)

如果 HTTP 方法不改變伺服器的狀態,則該方法是安全的。換句話說,如果方法導致只讀操作,則它是安全的。一些常見的 HTTP 方法是安全的:GETHEADOPTIONS。所有安全方法也都是冪等的,但並非所有冪等方法都是安全的。例如,PUTDELETE 都是冪等的,但卻是不安全的。

即使安全方法具有隻讀語義,伺服器仍可以更改其狀態:例如,它們可以記錄或保留統計資訊。這裡重要的是,透過呼叫安全方法,客戶端本身不會請求任何伺服器更改,因此不會給伺服器造成不必要的負載或負擔。瀏覽器可以呼叫安全方法,而不必擔心會對伺服器造成任何損害;這使它們能夠無風險地執行預取等活動。網路爬蟲也依賴於呼叫安全方法。

安全方法不必只提供靜態檔案;伺服器可以動態生成安全方法的響應,只要生成指令碼保證安全即可:它不應觸發外部效應,例如在電子商務網站中觸發訂單。

伺服器上的應用程式有責任正確實現安全語義,Web 伺服器本身(無論是 Apache、Nginx 還是 IIS)無法自行強制執行。特別是,應用程式不應允許 GET 請求更改其狀態。

呼叫安全方法,不改變伺服器狀態

http
GET /pageX.html HTTP/1.1

呼叫非安全方法,可能會改變伺服器狀態

http
POST /pageX.html HTTP/1.1

呼叫冪等但非安全的方法

http
DELETE /idX/delete HTTP/1.1

另見