美文网首页
http协议,状态码,方法了解一下?

http协议,状态码,方法了解一下?

作者: baron65 | 来源:发表于2018-07-23 20:19 被阅读0次

    一、http

    http协议

    1. http协议特性

    1.1 无状态
    http是不保存状态的协议,不保存之前的请求和响应,这样设计是为了确保协议的可伸缩性,可以快速处理大量事务
    为了验证身份,引入cookie
    1.2 持久链接(http1.1版本默认)
    在http的早起版本中,由于当时网络不这么发达,网络请求密度相对比较低,所以当时每做一次网络请求时,必须连接(三次握手)-请求与相应-断开连接(四次挥手),现在网络请求密度非常大,必须满足一次连接多次请求,所以在http1.1版本中默认所有的连接都是持久连接。
    1.3 管线化
    管线化即并发,持久连接使并发成为可能。
    1.4 内容协商
    通俗地来讲就是不同情况不同对待,比如访问同一个URI地址,浏览器语言默认为中文时我们访问到的是中文页面,默认语言是英文时我们访问到英文页面。
    内容协商会以语言、字符集、编码方式等作为基准判断响应的资源。

    2. http方法

    http首部

    通用首部字段


    image.png
    1.1 Cache-Control 缓存管理

    和缓存相关的指令,可以多个参数用’,’分隔:
    Cache-Control:private, max-age=0, no-cache

    1.1.1 public

    响应指令:Cache-Control:public。
    服务器返回给某个客户端的缓存,也可被其它任意客户端利用,这个缓存是公共的。

    1.1.2 private

    响应指令:Cache-Control:private。
    服务器返回给某个客户端的缓存,即使其它客户端需要这样的数据,这个缓存也不会给其它客户端用,这个缓存是私有的。

    1.1.3 no-cache

    请求和响应指令:Cache-Control:no-cache。
    客户端请求:不管缓存是何种情况,我必须从源服务器中获取最新的资源,这样是为了防止拿到过期的资源。
    服务端响应:此响应缓存服务器可以把它保存下来,但是每次缓存服务器要将此响应返回给客户端之前都必须找源服务器确认一下数据。

    1.1.4 no-store

    请求和响应指令:Cache-Control:no-store。
    对于客户端和服务端而言,该指定规定缓存不能在任何位置存储任何东西,我们可以将其看做是不缓存。

    1.1.5 max-age

    请求和响应指令:Cache-Control:max-age=60。
    客户端请求:在第一次请求后的60秒内,再请求可以直接将缓存给我。等于0时,缓存服务器需要将请求转发给源服务器。
    max-age=0和no-cache的区别:no-cache强制直接向源服务器请求不经过缓存服务器,而max-age=0需要经过缓存服务器。
    服务端响应:在第一次返回缓存之后的60秒内如果缓存服务器需要返回此缓存时,不需要向源服务器进行确认就可以直接发送。

    1.1.6 min-fresh

    请求指令:Cache-Control:min-fresh=60。
    在这60秒以内过期的资源无法作为响应进行返回。

    1.1.7 max-stale

    请求指令:Cache-Control:max-stale=60。
    客户端在这60秒内请求的缓存即使过期了也可照常接收。

    1.1.8 only-if-cached

    请求指令:Cache-Control:only-if-cached。
    客户端请求缓存,有缓存则返回,无缓存返回504状态码。

    1.1.9 must-revalidate

    响应指令:Cache-Control:must-revalidate。
    代理会向源服务器再次验证即将返回的响应缓存是否仍然有效。

    1.2 connection

    主要有两个作用:控制代理不再转发首部字段,持久链接管理
    1.2.1 控制代理不再转发首部字段


    image.png

    1.2.2 持久连接管理
    我们知道在http1.1版本中所有连接默认是持久连接,如果我们向手动地断开连接可以这样:Connection: close。
    为了兼容其它版本的http,我们这样设置:Connection: Keep-Alive

    1.3 Date

    表示创建报文的日期和时间

    请求首部字段


    image.png

    响应首部字段


    image.png

    参考:图解http(03)-http首部

    3.http方法

    Http1.1中的请求方法有这些
    3.1 GET
    请求访问已被URI识别的资源,请求不需要实体主体。

    3.2 POST
    传输实体主体。

    3.3 PUT
    传输文件,本身无验证机制,存在安全问题。

    3.4 DELETE
    删除文件,与PUT相反的方法,也无验证机制。

    3.5 HEAD
    HEAD方法和GET方法一样用于获取资源,只是HEAD方法的请求不返回报文的主体部分。

    3.6 OPTIONS
    用来查询针对请求URI指定的资源支持的方法(GET?POST?等)。

    3.7 TRACE
    让web服务器端将之前的请求通信返回给客户端的方法,用于追踪路径,请求在各个代理服务器之间中转最终到达目标服务器,在中转时请求可能会被篡改。

    3.8 CONNECT
    要求用隧道协议连接代理,主要使用SSL和TLS协议把通信内容加密后经网络隧道传输。

    4.http状态码

    image.png

    2XX·成功--------------------表示成功处理了请求的状态码

    • 200,客户端请求在服务器端被正常处理了;
    • 201,请求成功并且服务器创建了新的资源
    • 201,服务器已经接收,但是尚未处理
    • 203,服务器已经成功处理了请求,但返回的信息可能来自另一个来源
    • 204,请求处理成功了,但没有资源可返回;
    • 206,对资源的一部分进行请求成功返回;

    3XX·重定向

    • 301,永久移动
    • 302,临时移动
    • 304,服务器内容没有修改,返回此响应时,不会返回网页的内容,浏览器使用缓存
    • 305,使用代理
    • 307,临时性重定向

    4XX·客户端错误/请求错误

    • 400,请求报文中存在语法错误;
    • 401,用户认证失败;
    • 403,不允许访问资源;
    • 404,找不到资源。

    5XX·服务器错误

    • 500,服务器内部错误 服务器内部处理异常;
    • 503,服务器不可用 服务器暂时处于超负荷或者正在进行停机维护,无法处理请求。
    • 504,网关超时
    • 505,http版本不支受支持 服务器不支持请求中所用的http协议版本

    HTTP状态码详解与选用

    相关文章

      网友评论

          本文标题:http协议,状态码,方法了解一下?

          本文链接:https://www.haomeiwen.com/subject/udxrmftx.html