HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

文章目录


1. 请求方法详解

常用请求方法:

GET、HEAD、PUT、TRACE、DELETE、OPTIONS。

注意:

  1. HEAD和GET方法基本一致,只是HEAD不返回内容。当我们只是需要确定一个内容是否正常存在时,就可以使用HEAD。例如,当我们想要确认一张照片是否还存在时,就可以使用HEAD方法,不需要返回照片的内容。

    例如:我们用GET方法发出请求时,会返回相应的内容:

    HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

    而使用HEAD方法则不返回内容:

    HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

  2. TRACE用法:当我们使用了代理,比如代理访问news.163.com,你想看看代理有没有修改我们的HTTP请求,我们可以用TRACE来测试一下,163.com的服务器就会把最后收到的请求返回给我们。

  3. 虽然这些请求方法是HTTP协议里规定的,但WEB SERVER未必允许或支持这些方法。

  4. OPTIONS用法:是返回服务器可用的请求方法。

    HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

2. 状态码与状态文字详解

  • 状态码是用来反应服务器的响应情况的。

    常见的如200 OK,404 NOT FOUND

  • 状态文字是用来描述状态码的,便于人观察。

  • 状态码的5个系列:

    HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

    常用的状态码:

    1. 200 – 服务器成功返回网页

    2. 301/2 – 永久/临时重定向

      举例:

      302默认临时重定向:

      我们先将04.php文件重定向到百度网站

      HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

      当打开04.php文件时,我们可以看到302的状态码信息

      HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

      301为指定永久重定向:

      HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

      其中,true参数意指将301信息替换原来的头信息。

      注意:

      对于GET请求,重定向无所谓,能看到内容就行。但对于POST请求,比如将表单重定向到05.php,再将05.php重定向到06.php,此时会出现数据找不到的情况,那么如何解决这个问题呢?

      我们使用307状态码,在重定向之后仍然使用POST请求,此时可以成功返回数据:

      HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

    3. 304 Not Modified – 未修改

      客户端在向服务器发送请求信息时,会在请求头信息中加入一个时间戳和Etag(唯一资源标识符),当时间戳和Etag没有改变时,客户端就会告诉服务器可以在缓存中取出相应的响应信息。

      例如,当客户端请求一张图片时,如果在时间戳(If-Modified-Since)之后图片没有发生改变,并且图片的Etag也没有发生改变,服务器就会在缓存中提取该图片,然后响应给客户端,此时返回的就是304的状态码。

      HTTP协议中的请求方法、状态码与状态文字(HTTP协议详解)

    4. 307 – 重定向中保持原有的请求数据

    5. 404 – 请求的网页不存在

    6. 503 – 服务器暂时不可用

    7. 500 – 服务器内部错误


参考视频:https://www.bilibili.com/video/BV1js411g7Fw?p=2

上一篇:Head First 设计模式之观察者模式


下一篇:使用 OpenSSL 创建私有 CA:2 中间证书