0%

计算机网络-HTTP的几种请求

HTTP

HTTP请求方法

HTTP请求方法表明了要对给定资源执行的操作,每一个请求方法都实现了不同的语义,包括:GET,HEAD.POST,PUT,PATCH,DELECT,OPTIONS,以及不常用的CONNECT,TRACE.

GET

获取服务器的指定资源。

与 GET 方法一样,都是发出一个获取服务器指定资源的请求,但服务器只会返回 Header 而不会返回 Body。用于确认 URI 的有效性及资源更新的日期时间等。一个典型应用是下载文件时,先通过 HEAD 方法获取 Header,从中读取文件大小 Content-Length;然后再配合 Range 字段,分片下载服务器资源

POST

提交资源到服务器或者在服务器上新建资源

PUT

:替换整个目标资源

PATCH

:替换目标资源的部分内容

DELETE

:指定的资源。

OPTIONS

:用于描述目标资源的通信选项。可以用于检测服务器支持哪些 HTTP 方法,或者在 CORS 中发起一个预检请求,以检测实际请求是否可以被服务器所接受

CONNECT

:建立一个到由目标资源标识的服务器的隧道

TRACE

:执行一个消息环回测试,返回到服务端的路径。客户端请求连接到目标服务器时可能会通过代理中转,通过 TRACE 方法可以查询发送出去的请求的一系列操作(图示

幂等的

​ 一个HTTP方法是幂等的,指的是同样的请求执行一次与执行多次的效果是一样的 ,幂等方法不应该具有副作用。

  • 常见的幂等方法: GET HEAD PUT DELETE OPTIONS
  • 常见的非幂等方法:POST

安全的

​ 一个HTTP方法是幂等的,说明此方法只对服务器进行只读的方法,不会修改服务器数据。

  • 常见的安全方法:GET,HEAD,OPTIONS
  • 常见的不安全方法:PUT,DELETE,POST
  • 所有安全的方法都是幂等的;有些不安全的方法如 DELETE 是幂等的,有些不安全的方法如 PUT 和 DELETE 则不是

可缓存的:GET、HEAD。

GET与POST的区别

GET POST
应用 获取浏览器的数据 添加/修改浏览器的数据
历史记录 / 书签 可保留在浏览器历史记录中,或者收藏为书签 不可以
Cacheable 会被浏览器缓存 不会缓存
幂等 幂等,不会改变浏览器上的资源。 非幂等
后退/刷新 GET是无害的 重复提交POST表单
参数位置 query 中(直接明文暴露在链接中) query 或 body 中
参数长度 2KB(2048个字符) 无限制

HTTP状态码

信息响应(100–199)

  • 100 Continue:表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应

成功响应(200-299)

  • 200 OK
  • 201 Created 该请求已成功,并因此创建了一个新的资源,这通常是在POST请求之后后悔的响应
  • 204 No Content:该请求已成功处理,但是返回的响应报文不包含实体的主体部分。通常用于只需要从客户端往服务器发送信息,而不需要返回数据时
  • 206 Partial Content:服务器已经成功处理了部分 GET 请求,该请求必须包含 Range 头信息来指示客户端希望得到的内容范围。通常使用此类响应来实现断点续传,或者将一个大文档分为多个片段然后并行下载

重定向(300-399)

  • 301 Moved Permanently:永久性重定向

  • 302 临时性重定向,常见应用场景是是通过 302 跳转将所有的 HTTP 流量重定向到 HTTPS

  • 303 See Other :和302有着相同的功能,但303明确要求客户端应该采用GET方法获取资源

  • 304 Not Modified:如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304 响应不包含消息体

  • 307 Temporary Redirect:临时重定向。307 与 302 之间的唯一区别在于,当发送重定向请求的时候,307 状态码可以确保请求方法和消息主体不会发生变化;而如果使用 302 响应状态码,一些旧客户端会错误地将请求方法转换为 GET

客户端错误(400- 499)

  • 400 Bad Request :请求报文中存在语法问题,或者参数有误。
  • 401 Unauthorized:未认证(没有登录)
  • 403 Forbidden :没有权限(登陆了但没有权限)
  • 404 Not Found :找不到资源
  • 405 Method Not Allowed

服务器错误(500-599)

  • 500 Internet Server error :服务器遇见了不知道如何处理的情况

  • 502 Bad Gateway:网关错误,作为网关或代理角色的服务器,从上游服务器(如tomcat、php-fpm)中接收到的响应是无效的

  • Service Unavailable:服务器无法处理请求,常见原因是服务器因维护或重载而停机