• HTTP状态码和HTTP请求头


    HTTP报文是在Web服务器和浏览器之间进行交换的文本数据,一种是从浏览器发出的请求,一种是服务器发出的响应。

    请求报文的第一行包括:1、请求方法 2、当前使用的HTTP协议版本 3、请求地址

    GET / HTTP/1.1
    headers 
    
    
    
    message-body

    响应报文的第一行包括:1、当前使用的HTTP协议版本 2、三位阿拉伯数字的HTTP状态码 3、状态描述

    HTTP/1.1 200 OK
    headers 
    
    
    
    message-body

    HTTP状态码

    HTTP状态码是服务器返回给浏览器的三位数字,说明了请求的状况。

    状态码分为五大类:1xx,2xx,3xx,4xx,5xx。

    1xx

    告知类状态码:服务器收到请求,需要进一步处理。

    2xx

    服务器收到请求,请求成功。

    200 OK

    成功的请求。

    204 No Content

    不用返回内容。浏览器请求成功,但是服务器不用返回内容。服务器返回的报文,报文体是空的。204状态默认会被浏览器缓存。

    3xx

    客户端(浏览器)需要进一步行动以完成整个请求,大多数3xx用于重定向。如果下一次的请求方法是GET或是HEAD,则在返回3xx状态码的情况下,不需要用户参与,浏览器自动进行下一步的动作。

    301   Moved Permanently

    永久重定向。服务器返回的报文头部包括Locaction字段,值为新的资源地址。

    HTTP/1.1 301 Moved Permanently
    Location: http://www.example.org/index.asp

    302 Found

    暂时重定向。服务器返回的报文头部包括Locaction字段,值为新的资源地址。

    和301永久重定向的区别在于,用户代理(比如浏览器)仍需要请求原地址。

    304 Not Modified

    资源未变动。浏览器不用再次发送请求报文,重定向到本地缓存。

    4xx

    客户端(浏览器)错误。返回的报文体包含错误信息,客户端应该将其展示给用户。

    403 Forbidden

    被禁止。服务端收到请求,拒绝做进一步的动作。因为客户端(浏览器)没有访问某些资源的权限。

    404 Not Found

    资源未找到。

    HTTP Headers

    HTTP Headers用于客户端和服务端交换请求时添加额外的信息。

    HTTP Request Headers 请求头

    浏览器发送请求报文的时候,在请求报文头部添加请求头。

    If-None-Match

    是否匹配。请求报文的请求头包含If-None-Match字段,值是之前返回报文返回头的Etag值。

    If-Modified-Since

    资源在某个时间点之后是否过期。

    只能在GET或是HEAD方法中使用。级别比If-None-Match低。

    HTTP Respons Headers 返回头

    服务器发送返回报文的时候,在返回报文头部添加返回头。

    Last-Modified

    资源上次更新的信息。

    由服务器返回,没有Etag字段准确。

    Expires

    资源过期时间。

    服务器认为在该时间点之后,资源就要被视为过期。

    ETag(Entity Tag)

    实体标签。可以理解为某资源的id,签名或是指纹。Etag没有统一的生成方式。

    General header 通用头

    通用头部信息,请求头或是返回头都可以添加。

    Cache-Control

    控制资源的缓存机制。

    请求报文头和返回报文头都可以包含。

    控制字段分为四类:缓存型字段,时效性字段,重新验证和重新加载,其它。

    缓存型字段:决定浏览器的缓存能力。

    public:可以被任何缓存机制缓存,比如代理或是ISP。

    private:被最终的用户缓存,不会被网络的中间节点缓存。

    no-cache:强制浏览器发送请求来验证本地缓存资源是否有效。

    时效性字段:决定资源是否有效。

    max-age=<seconds>: 资源的过期时间。与Expires不同,指定的是资源相对于之前发送请求的时间。

    重新验证和重新加载:浏览器重新验证资源或是重新加载资源。

    must-revalidate:在使用前必须验证资源的有效性,不应该使用失效的资源。

    其它:

    no-store:浏览器缓存不会缓存任何东西。

    参考资料】

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages

    https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

    https://erikeldridge.wordpress.com/2011/01/23/a-dive-into-http-1-1-message-formatting/

    https://www.koozai.com/blog/analytics/server-response-codes-and-what-they-mean/

  • 相关阅读:
    mysql视图产生派生表无法优化案例
    根据.frm .ibd文件恢复表
    binlog内容时间乱序问题排查
    mysql官方的测试数据库employees超30万的数据,安装方法介绍
    数据库大量Waiting for table flush 状态SQL问题排查
    mysql搭建从库并配置ssl
    MySQL lOAD DATA详解
    redis eval
    aws-rds for mysql 5.7.34时间点恢复数据
    MySQL 如何处理监听连接的
  • 原文地址:https://www.cnblogs.com/oneplace/p/8254161.html
Copyright © 2020-2023  润新知