学习资源主要为:@小坦克HTTP相关博客

一、请求头信息(Request Header)

请求头信息包含比较多,如下:

1、Cache头域

  if-modified-Since

  作用:把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上的实际文件的最后修改时间进行对比。如果说时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。

  if-none-match

  作用:if-none-match和etag一起工作,工作原理是再http response中添加etag信息。当用户再次请求该资源时,将在http request中加入if-none-match信息(etag的值)。如果服务器验证资源的时候etag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和etag。使用这样的机制将提高网站的性能。

  Pragma

  作用:防止页面被缓存,在http/1.1版本中,它和cache-control:no-cache作用一样。pargma只有有一个用法。pragma:no-cache

  cache-control

  作用:这个是非常重要的规则。这个用来置顶response-requesst遵循的缓存机制。各个指令含义如下:

  cache-control:public--可以被任何缓存所缓存

  cache-control:private--内容只缓存到私有缓存中

  cache-control:no-cache---所有内容都不会被缓存

  (缓存的好处:1、较少冗余的数据传输;2、减少服务器的负担;3、加快客户端加载网页的速度)

  (F5刷新浏览器和地址栏中输入网址回车的处理方式不同:F5刷新浏览器,会去Web服务器验证缓存;后者是直接去访问有效的缓存,不会去请求服务器。)

2、client头域

  Accept

  作用:浏览器可以接受的媒体类型

  accept:*/*代表浏览器可以处理所有类型

  Accept-Encoding

  作用:浏览器申明自己接收的编码方法,通常制定压缩方法,是否支持压缩,支持什么压缩方法

  User-Agent

  作用:告诉http服务器,客户端使用的操作系统和浏览器的名称和版本

  Accept-Charset

  作用:浏览器申明自己接收的字符集

3、Cookie/Login头域

  Cookie

  作用:最重要的header,将cookie的值发送给http服务器

4、Entity头域

  Content-Length

  作用:发送给http服务器数据的长度

  Content-Type

  作用:数据类型

5、Miscellaneous头域

  referer

  作用:提供了request上下文信息给服务器,告诉服务器我是从哪个链接过来的。

  origin

  作用:主要是用来说明最初请求是从哪里发起的,主要用于POST请求。

6、Transport头域

  Connection

  作用:确定传输数据后tcp的链接状态

  Connection:keep-alive---当一个 网页打开完成后,客户端和服务器之间用于传输http数据的tcp链接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的链接。

  Connection:close---表示一个requset完成沪,客户端与服务器之间用于传输http数据的tcp链接会关闭,当看客户端再次发送request,需要重新建立tcp链接。

  Host(发送请求时,该头域是必须的)

  作用:请求报文头域主要用于指定被请求资源的internet主机和端口号,它通常从http url中提出出来

二、响应头信息(response header)

1、Cache头域

  Date

  作用:生成消息的具体时间和日期

  Expires

  作用:浏览器会在指定过期时间内使用本地缓存

  Vary

  vary:accept-Encoding

  (如果同时存在cache-control和Expires:浏览器优先使用cache-control)

2、Cookie/login头域

  P3P

  作用:用于跨域设置Cookie,这样可以解决iframe跨域访问cookie的问题

  set-cookie

  作用:非常重要的header,用于把cookie发送到客户端浏览器,每一个写入cookie都会生成一个set-cookie

3、Entity头域

  Etag

  作用:和if-None-match配合使用

  Last-modified

  作用:用于指定资源的最后修改日期和时间

  (Etag主要是为了解决Last-Modified无法解决的一些问题:1、不能精确定位文件的最后修改时间;2、文件改动太频繁,在秒以下,last-modified只能精确到秒;3、文件最后修改时间变了,但是内容未变。)

  content-type

  作用:web服务器告诉浏览器自己响应的对象的类型和字符集

  content-length

  作用:指明实体正文的长度,已字节方式存储的十进制数字来表示

  content-encoding

  作用:web服务器表明自己使用了什么压缩方法压缩响应中的对象

  content-language

  作用:web服务器告诉浏览器自己响应的对象的语言

4、miscellaneus头域

  server

  作用:指明http服务器的软件信息

  x-aspnet-version

  作用:如果网站是用asp.net开发的,这个header用来表示asp.net的版本

  X-Powered-By

  作用:表示网站是用什么技术开发的

5、Transport头域

  Connection

6、Location头域

  location

  作用:用于重定向一个新的位置,包含新的url地址

HTTP学习记录:四、头信息(请求和响应)的更多相关文章

  1. leveldb 学习记录(四)Log文件

    前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...

  2. JavaScript学习记录四

    title: JavaScript学习记录四 toc: true date: 2018-09-16 20:31:22 --<JavaScript高级程序设计(第2版)>学习笔记 要多查阅M ...

  3. 4.VUE前端框架学习记录四:Vue组件化编码2

    VUE前端框架学习记录四:Vue组件化编码2文字信息没办法描述清楚,主要看编码Demo里面,有附带完整的代码下载地址,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/ ...

  4. Koa2学习(四)POST请求

    Koa2学习(四)POST请求 接受请求 POST请求的数据实体,会根据数据量的大小进行分包传送. 当node.js后台收到post请求时,会以buffer的形式将数据缓存起来.Koa2中通过ctx. ...

  5. 爬虫学习(四)——post请求爬取

    百度翻译爬取数据 import urllib.requestimport urllib.parsepost_url = "https://fanyi.baidu.com/sug"h ...

  6. leveldb 学习记录(四) skiplist补与变长数字

    在leveldb 学习记录(一) skiplist 已经将skiplist的插入 查找等操作流程用图示说明 这里在介绍 下skiplist的代码 里面有几个模块 template<typenam ...

  7. ICE学习第四步-----客户端请求服务器返回数据

    这次我们来做一个例子,流程很简单:客户端向服务器发送一条指令,服务端接收到这条指令之后,向客户端发送数据库中查询到的数据,最终显示在DataGridView上. 根据上一篇文章介绍的Slice语法,我 ...

  8. SpringMVC学习记录四——功能开发及参数绑定

    9       商品修改功能开发 9.1      需求 操作流程: 1.进入商品查询列表页面 2.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据 ...

  9. HTTP学习记录:二、请求方法

    学习资源主要为:@小坦克HTTP相关博客 最基础的是4种,GET.POST.PUT.DELETE对应着对资源的查.改.增.删.最常用的是GET和POST. GET一般用于获取/查询资源信息: POST ...

  10. Linux 学习记录 四(Bash 和 Shell scirpt)

    一.什么是 Shell? 狭义的shell指的是指令列方面的软件,包括基本的Linux操作窗口Bash等,广义的shell则包括 图形接口的软件,因为图形接口其实也可以操作各种驱动程序来呼叫核心进行工 ...

随机推荐

  1. Java中Collection、Map常用实现类研究分析

    接口/实现类 描述 key是否可为null 为null是否报错 key是否重复 key重复是否报错 key是否和添加一致 是否线程安全 List 一组元素的集合 ArrayList 基于数组存储,读取 ...

  2. 牛客练习赛26 D xor序列 (线性基)

    链接:https://ac.nowcoder.com/acm/contest/180/D 来源:牛客网 xor序列 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他 ...

  3. 转载:利用php数组函数进行函数式编程

    因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 这段程序与那个BUG有密切的关系. 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能 第一个是在一 ...

  4. zencart后台修改首页meta_title、meta_keywords、meta_description

    includes\languages\english\模板\meta_tags.php 首先,将meta_tags.php中常量HOME_PAGE_META_DESCRIPTION.HOME_PAGE ...

  5. 清北学堂提高组突破营游记day5

    长者zhx来啦.. (又要送冰红茶了...) zhx一上来就讲动态规划...是不是要逼死人.... 动态规划: 最简单的例子:斐波那契数列.因为他是递推(通项公式不算)的,所以前面的已经确定的项不会影 ...

  6. Python 元组Ⅰ

    Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: 创建空元 ...

  7. linux安装篇之mongodb安装及服务自启动配置

    1. 下载地址:https://www.mongodb.com/download-center?jmp=nav#community 2.放置到/opt目录下 3.解压:tar -zxvf mongod ...

  8. Mysql 日期函数date_format()

    用法:DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据 1.语法 date_fromat(date,format) 说明:date 参数是合法的日期.format 规定日期/时间的输 ...

  9. 如何修改 tomcat 端口号?

    一.tomcat默认端口 tomcat默认的端口是8080,还会占用8005,8009和8443端口.如果已经启动了tomcat,再启动另一个tomcat就会发现 这些端口已经被占用了,这个时候就需要 ...

  10. 【java工具类】生成Zip压缩包

    多文件生成压缩包,返回压缩包生成位置的路径. FileUtil.java /** * 文件打压缩包 * @param files * @param Name * @return * @throws E ...