多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 1.2 何时使用 GET 方法 Web 基础设施严重依赖于GET 方法的幂等性和安全性。客户端期望能够重复发起 GET 请求, 而不必担心造成副作用。缓存依赖于不需访问源服务器便能提供已缓存表述的能力。 #### 问题描述 您想知道何时应该与何时不应该使用 GET 请求,以及 GET 请求使用不当的潜在后果。 #### 解决方案 使用GET 方法进行安全与幂等的信息获取。 #### 问题讨论 每个 HTTP 方法都具有特定的语义。正如 1.1 节所讨论的,GET 的目的是得到一个资源的表述,PUT 用于建立或更新一个资源,DELETE 用于删除一个资源,POST 用于创建多个新资源或对资源进行多种其他变更。 在所有上述方法中,GET 被滥用的情况最少,因为GET 既安全又幂等。 > 注意:不要把 GET 方法用于不安全或非幂等操作。 > 因为这样做可能会造成永久性的、意想不到的、不符合需要的资源改变。 大部分对GET 的滥用都是将它用在不安全操作上,以下是一些例子: ~~~ # 将页面存为书签 GET /bookmarks/add_bookmark?href=http%3A%2F%2F www.example.org%2F2009%2F10%2F10%2Fnotes.html HTTP/1.1 Host: www.example.org # 向购物车添加内容 GET /add_cart?pid=1234 HTTP/1.1 Host: www.example.org # 发送消息 GET /messages/send?message=I%20am%20reading HTTP/1.1 Host: www.example.org # 删除便条 GET /notes/delete?id=1234 HTTP/1.1 Host: www.example.org ~~~ 对于服务器来说,所有这些操作都是不安全和非幂等的。但对于那些基于HTTP 的软件,这些操作都是安全和幂等的。这种差异的后果严重依赖于应用程序。例如,一个工具在服务器上通过定期提交一个GET 请求来执行健康检查,如果使用上面第 4 个URI,则将删除一条记录。 如果这些操作必须要使用GET 方法,特别警惕以下几点: *  添加Cache-Control: no-cache 头来确保响应不被缓存。 *  确保由此产生的任何副作用都是良性的,不会改变关键业务数据。 *  在服务器实现方面,将这些操作实现成可重复执行的(例如,幂等的)。 上述要点可以帮助减少某些错误的操作(不是全部)导致的后果,但最佳的措施是避免GET方法的滥用。