Http协议中常用字段总结(不定时完善中)

1.Http协议概述

关于Http协议的发展,各种资料有很多,在此不再赘述,不明白的小伙伴儿可以去搜一下,Http报文分为请求报文和相应报文,由于Http是面向文本的,因此在报文中的每一个字段都是一些ASCII码,下图是摘自谢希仁第五版《计算机网络》的图片,本文按照这两种分类对报文头的字段进行一下汇总说明。

资料都是从给位大神那里获取到的,我只是负责汇总而已~

2.Http请求报文

如上图(a)中为请求报文格式,分为请求行、首部行和实体主体(本文对实体主体不做说明,下同);

2.1 请求行

请求行包括方法、URL和版本,下面分别其进行说明。

方法:HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,最常用的方法是GET和POST;

URL:请求的地址

版本:协议名称及版本号,例如:HTTP/1.1

2.2 首部行

Accept:客户端期待接收的文件类型

Accept-Encoding:客户端可以接收的编码格式。它是为了压缩并提高文件传递速度,客户端在接收到Web相应之后衔接吗,然后检查文件格式

Accept-Languages:客户端期望接收到的语言种类

Cache-Control:

Connection:用来通知服务器是否可以保持固定的HTTP连接,包括Upgrade,Keep-Alive和close。HTTP/1.1使用Keep-Alive为默认值,保证了浏览器需要多个文件时,不需要每次都建立连接。使用close之后,服务器会断开与客户端的连接。

Host:请求的目标主机

Cookie:这个字段在开发的时候比较常用,最初在实现购物车效果的时候,一般都采用Cookie。关于Cookie的工作原理,文章最后会做详细解释。

User-Agent:User-Agent是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。用较为普通的一点来说,是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识。具体内容请参考:http://blog.csdn.net/rj042/article/details/6991441

Upgrade-Insecure-Requests:与安全相关的设置

If-Modified-Since:

3.Http响应报文

4.Cookie工作原理

Cookie是这样工作的:

当用户浏览某个使用Cookie的网站时,该网站的服务器就为用户产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。并在给用户的HTTP相应报文中添加一个叫做Set-Cookie的首部行,这里的“首部字段名称”就是“Set-Cookie”,对应的字段值就是服务器赋予该用户的“识别码”。其格式如下:

Set-cookie:abcdefg(只作为示例,实际肯定比这个复杂)

当用户收到这个响应式,其浏览器就在他管理的特定Cookie文件中添加一行,其中包括这个服务器的主机名(即host字段)和Set-cookie对应的这个网站的识别码,并放到HTTP请求报文的Cookie首部行中,如下:

Cookie:abcdefg

以上就是整个Cookie的流程,网站可以根据Cookie值跟踪用户在该网站的活动,假设该网站为一个购物网站,那么服务器就可以为该用户通过Cookie维持一张购物列表,使用户在结束这次购物时可以一起付费。

时间: 2024-08-02 04:38:47

Http协议中常用字段总结(不定时完善中)的相关文章

如何使用MySQL一个表中的字段更新另一个表中字段

这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ? 1 2 3 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 ? 1 2 3 update a, b set a.title=b.title, a.name=b.name where a.id=b.id ?子查询 ? 1 update student s set ci

Django ORM中常用字段和参数

Django ORM 常用字段和参数 常用字段 AutoField int自增列,必须填入参数primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_length参数, max_length表示字符长度. 这里需要知道的是Django中的CharFiel

Django中常用字段

一.Djiango框架的常用字段 Django ORM 常用字段和参数 常用字段 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_length参数, max_length表示字符长度. 这

shell 脚本中常用字符含义与vim编辑器中的快捷键

1.vim编辑器的命令模式中常用的快捷键 命令 作用 dd 删除(剪切)光标所在整行. 5dd 删除(剪切)从光标处开始的5行. yy 复制光标所在整行. 5yy 复制从光标处开始的5行. p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后. /字符串 在文本中从上至下搜索该字符串. ?字符串 在文本中从下至上搜索该字符串. n 显示搜索命令定位到的下一个字符串. N 显示搜索命令定位到的上一个字符串. u 撤销上一步的操作 2.vim编辑器的末行模式中的常用命令 命令 作用 :w 保存

因在缓存对象中增加字段,而导致Redis中取出缓存转化成Java对象时出现反序列化失败的问题

背景描述 因为业务需求的需要,我们需要在原来项目中的一个DTO类中新增两个字段(我们项目使用的是dubbo架构,这个DTO在A项目/服务的domain包中,会被其他的项目如B.C.D引用到).但是这个DTO对象已经在Redis缓存中存在了,如果我们直接向类中增加字段而不做任何处理的话,那么查询操作查出来的缓存对象就会报反序列化失败的错误,从而影响正常的业务流程,那么来看一下我的解决方案吧. 升级缓存版本号 我们的正式环境和预发布环境是共用Redis和Mysql.如果修改了DTO且没有加@Json

常用sql 全记录(添加中)

-- 数据库SQL总结中........... --SQL分类: (CREATE,ALTER,DROP,DECLARE) ---DDL-数据定义语言(SELECT,DELETE,UPDATE,INSERT) ---DML-数据操纵语言(GRANT,REVOKE,COMMIT,ROLLBACK) --DCL-数据控制语言--设置内存选项--设置 min server memory 配置项EXEC sp_configure N'min server memory (MB)', 0 --设置 max

DJANGO入门系列之(常用字段和参数)

本文目录 1 ORM字段 2 ORM字段参数 3 关系字段 4 多对多关联关系的三种方式 5 元信息 6 自定义字段(了解) 回到目录 1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. CharField 字符类型,必须提供max_length参数, max_length表示字符长度.

Django框架(九) Django之ORM常用字段和参数

ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. DateField 日期字段,日期格式  YYYY-MM-DD,相当于Python中的datetime.date()实例. DateTim

ORM常用字段和参数

ORM常用字段和参数 一.ORM字段 1. AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. 2. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. 3. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. 4. DateField 日期字段,日期格式 YYYY-MM-DD,相当于Python中的da