HTTP协议和Cookie

是stateless协议,自身不对请求和响应之间的通信状态进行保存。但随着技术发展,为了实现保存状态的功能,引入了Cookie技术。

Cookie在请求和响应报文中写入信息来控制客户端的状态。

  1. Cookie根据从服务器发送的响应报文内的Set-Cookie的首部字段信息,通知客户端保存Cookie。
  2. 下次客户端发送请求时,会在报文中加入Cookie值。
  3. 服务器收到报文后,检查Cookie,确认是哪个客户端发过来的连接请求,然后再对比服务器上的记录,得到之前的状态信息。

告知服务器意图的HTTP 方法:

GET,POST

HEAD:获得报文首部,不返回主体部分。用于确认URL的有效性和资源更新的日期时间等。

PUT, DELETE: 不带验证机制,只当配合Web应用的验证机制或遵守REST标准时使用。

OPTIONS: 询问支持的方法

CONNECT:要求用隧道协议连接代理。

持久连接,HTTP1.1的特性:

不会每次HTTP通信后都断开,这样减少重复建立连接和断开的负担。

管线化:在连接的时候,发送请求,和响应请求分开了。可以并行发送多个请求,无需一个接一个等待响应。



第3章 HTTP报文内的信息

之前的博客(有图)https://www.cnblogs.com/chentianwei/p/9485301.html

3.1报文 message

分为:通用的首部,请求首部,响应首部,实体首部4种。常见的见之前的博客的表格。

3.4发送多种数据的多部分对象集合Multipart

HTTP协议发送的报文主体内可含有多类型实体,通常是在图片或文本文件上传时使用:

multipart/form-data: 表单上传

multipart/byteranges:状态码206响应报文包含了多个范围的内容时使用

使用Content-Type,并加上boundary=XXX

集合对象中的每个对象使用--XXX进行区分,最后的结尾用--XXX--标志来代表结束。

3.5获取部分内容(图片)的range request

超大的图片下载过程,一旦中断,无需从新下载,因为它使用了Range Request。类似把大图切割成几部分,就像包一样。

Content-Range: bytes 5001-10000/10000


第4章 状态码

60多种,常用14种。

200: ok

204: No Content, 请求处理成功了,但返回的response message中没有主体部分。

206: Partial Content, 表示客户端进行了Range request,服务器成功执行了这部分GET请求。响应报文中包含了Content-Range指定的实体内容。

301: Move Permanently, 表示请求的资源已经被分配了新的URL, 以后应使用资源现在所指向的URL.

302:Found, 表示临时重定向,表示请求的资源被分配了新的URL,希望本次使用这个URL访问。

303: See Other,表示请求对应的资源存在另一个URL,应该使用GET方法定向获取请求的资源。其他和302类似。

304: Not Modified, 表示客户端发送带条件的请求,服务器允许请求访问资源,但未满足条件的情况。304返回时,不带响应的主体部分。

⚠️(if-Match, If-Modified-Since,If-None-Match, If-Range, If-Unmodified-Since)首部

307: Temporary Redirect等同302,业界习惯POST变成GET。

400: Bad Request, 表示请求报文中有语法错误❌。

401 Unauthorized, 表示需要通过HTTP认证

403 Forbidden,服务器对请求资源的访问拒绝。实体的主体部分看对原因的描述。

404 Not Found, 服务器上无法找到请求的资源,除此之外也可以在服务器端拒绝请求并且不想说明理由时使用。

500 Internal Server Error ,表示服务器在执行请求时出现❌,bug,临时故障。

503 Service Unavailable, 表示服务器暂时不可用,超载,停机维护。

⚠️ 状态码有可能和真实状况不一致。


第5章,和HTTP协作的Web服务器。

5.1虚拟主机virtual Host技术

让一台服务器托管了N多个域名。 Web托管服务的供应商就是这么做的。

因此,发送HTTP请求,必须使用完整的主机名或域名URL

5.2 通信数据转发程序

代理:使用代理服务器可以减少网络带宽的流量(利用缓存技术)

缓存代理proxy:在代理服务器上储存从源服务器上发过来的response message。

缓存有效期。客户端也可以缓存。

网关:和代理类似,但可以提供非HTTP协议服务。提高了安全性,如:连接数据库,连接信用卡结算系统

隧道: 使用SSL等加密手段进行通信。确保安全通信。



第6章HTTP首部

4种类型:

General Header Fields,

Request Header Fields, 补充了请求的附加内容, 客户端信息, 响应内容相关优先级等信息。

Response Header Fields, 补充了响应的附加内容,也会要求客户端附加额外的内容信息。

Entity Header Fields, 报文实体部分使用的首部,补充了资源内容更新时间等和实体有关的message.

详细讲解见本书85页

Request header Fields


6.3 HTTP1.1通用首部字段

6.31Cache-Control (有20来个指令,见86页)

博客相关知识:https://www.cnblogs.com/chentianwei/p/9374341.html

public/private: 是否其他用户也可以利用缓存。

no-cache:实际意思是不缓存过期的资源

如果是响应指令,代表缓存前必须先确认其有效性。如果是请求指令,代表向源服务器取资源不要缓存。

目的:防止从缓存中返回过期的资源。

no-store: 不储存缓存资源,真正的不缓存。

max-age: 代表资源保存为缓存的最长时间。max-age比Expires优先级高。

max-stale: 最大过期时间。即使超过max-age,但没超过max-stale 缓存仍然会被客户端接收。

6.32 Connection

  • 控制不再转发给代理的首部字段 Connection: 不再转发的首部字段名
  • 管理持久连接。Connection: close/ keep-Alive

6.33 Date 创建报文的时间。

6.36 Transfer-Encoding: chunked

规定使用分快传输的编码方式。

6.38 Via

用于追踪传输路径,报文经过代理和网关时会在via中附加该服务器的信息。

6.39 Warning (具体见98页)

告知用户一些和缓存相关的问题的警告。

Warning: [警告码][主机: 端口号]"[警告内容]"([日期时间])


6.4 request header fields

6.41 accept

6.45 Authorization

6.47 host

6.48 If-Match

如果是星号*,If-Match:*, 则忽略ETag值。只要资源存在就处理。

If-Match和If-None-Match作用相反。


6.5 response header fields

6.51 accept-ranges

6.53ETag


6.6 Entity header fields

6.66 Content-MD5


6.7为Cookie服务的header fields(130页)

工作机制: 用户识别,状态管理。

Set-Cookie: 响应首部字段

Cookie: 请求首部字段

属性:


《图解Http》 2-6章: 基础,报文,状态码,首部。的更多相关文章

  1. 《图解HTTP》——返回结果的 HTTP 状态码

    状态码概述 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果.借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误. 状态码如 200 OK,以 3 位数字和原因短语组成.数 ...

  2. 图解 HTTP 笔记(四)——HTTP 状态码

    本章主要内容是了解 HTTP 状态码的工作机制 状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果.借助状态码,我们可以了解这次请求是否在服务器端得到了正常的处理. 状态码从其含以上可以分 ...

  3. Http报文 状态码

    一.HTTP报文 1.HTTP报文介绍 HTTP报文:用于HTTP协议交互的信息. HTTP报文由报文头部和报文主体(非必须)构成,中间由空行来分隔. 1.1 请求报文:客户端发起的报文. 1).报文 ...

  4. 【HTTP】HTTP报文&状态码

    HTTP报文中的HTTP信息 一.编码提升传输速率 编码的好处:有效处理大量的访问请求 编码的弊端:会消耗更多的CPU资源 报文主体&实体主体 报文:HTTP通信的基本单元,8位组字节流组成, ...

  5. 计算机网络相关知识(http状态码 && 首部字段)

    计算机网络相关知识 计算机网络的知识还是非常重要的, 这里做一个简单的总结. 推荐阅读文章:http://www.cnblogs.com/TankXiao/archive/2012/02/13/234 ...

  6. HTTP响应报文应答状态码及含义

    本应答报文状态码是老猿结合多方资料收集综合后并加以老猿自己的理解进行说明的应答报文状态码,应该是最新最全解释最详尽的,供大家参考:

  7. HTTP服务及状态码

    第一章 HTTP 1.1 HTTP协议的概念 HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网上常用的通信协议之一,它有很多的应用.但是流行的 ...

  8. php分享十七:http状态码

    一:http状态码 (200,301,302,304,305,400,401,403,404,500,501,502,503,504) HTTP状态码(HTTP Status Code)是用以表示网页 ...

  9. (第三章,第四章)http报文内的http信息,返回结果的http状态码

    第三章 http报文内的http信息 用于http协议交互的信息被称为http报文,包括请求报文和响应报文. 1.编码提升传输速率,在传输时编码能有效的处理大量的访问请求.但是编码的操作是计算机完成的 ...

随机推荐

  1. FZU 1064 教授的测试(卡特兰数,递归)

    Problem 1064 教授的测试 Accept: 149 Submit: 364 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Des ...

  2. CentOS安装Nginx-1.6.2+安全配置+性能配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Nginx之前,请确保已经使用yum安装了pcre等基础组件,具体见<CentOS安装LNMP环境的基础 ...

  3. Git 基本操作(二)

    1. 分支操作 1.1 Fast-forward 当被合并分支(C4)位于合并分支(C2)的历史线上,此时的合并称为"fast-forward"; // hotfix 被合并到 m ...

  4. django自带权限机制

    1. Django权限机制概述 权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活:用好权限机制,能让系统更加强大和健壮.因此,基于Django的开发,理清Django权限机制是 ...

  5. centos LAMP第二部分apache配置 下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转 配置apache的访问日志 配置静态文件缓存 配置防盗链 访问控制 apache rewrite 配置开机启动apache tcpdump 第二十节课

    centos    LAMP第二部分apache配置  下载discuz!配置第一个虚拟主机 安装Discuz! 用户认证 配置域名跳转  配置apache的访问日志  配置静态文件缓存  配置防盗链 ...

  6. 【spring mvc】application context中【bean】的生命周期

    生命周期过程 主要分为四部分: 一.实例化 1. 当调用者通过 getBean( name )向 容器寻找Bean 时,如果容器注册了org.springframework.beans.factory ...

  7. (转)二十三种设计模式及其python实现

    本文源码寄方于github:https://github.com/w392807287/Design_pattern_of_python 参考文献: <大话设计模式>——吴强 <Py ...

  8. Elasticsearch查询规则(一)match和term

    es种有两种查询模式,一种是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索,比如 GET /megacorp/employee/_search //查询 ...

  9. expdp&impdp备份恢复常用命令

    备份前准备 创建备份用户 create user backup identified by backup#2018 ; 授予导入导出角色 grant connect,resource to backu ...

  10. svn命令行使用

    1.将文件checkout到本地目录    svn checkout path(path是服务器上的目录)    例如:svn checkout svn://192.168.1.1/pro/domai ...