安全(HTTP 方法)

如果 HTTP 方法不会更改服务器的状态,则该方法是安全的。换句话说,如果方法导致只读操作,则该方法是安全的。一些常见的 HTTP 方法是安全的:GETHEADOPTIONS。所有安全方法也都是 幂等的,但并非所有幂等方法都是安全的。例如,PUTDELETE 都是幂等的,但不是安全的。

即使安全方法具有只读语义,服务器也可以更改其状态:例如,它们可以记录或保留统计信息。这里重要的是,通过调用安全方法,客户端本身不会请求任何服务器更改,因此不会对服务器造成不必要的负载或负担。浏览器可以调用安全方法,而无需担心对服务器造成任何损害;这允许它们执行诸如预取之类的活动而不会产生风险。Web 爬虫也依赖于调用安全方法。

安全方法不必只服务于静态文件;服务器可以即时生成对安全方法的响应,只要生成脚本保证安全:它不应触发外部影响,例如在电子商务网站中触发订单。

服务器上的应用程序负责正确实现安全语义,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

另请参阅