近期没需求,也没什么心情去看书,就总结一下自己以前看的HTTP协议基础内容吧。(会很乱,可能不适合一点都没接触过HTTP协议的人观看)

一、HTTP Request header

1、Cache头域

if-Modified-since:缓存

if-None-Match:可提高性能(在Response中添加ETag信息,客户端再次请求资源,Request中加入if-None-Match(ETag的值),服务器验证ETag,若没改变返回状态码304,有改变,返回状态码200)

Pragma:防止页面被缓存

Cache-Control:Response—Request遵循的缓存机制

  public:可以被任何缓存所缓存

  private:内容只缓存在私有缓存中

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

2、Client头域

Accept:浏览器可以接受的文件类型(Accept:text/html 表示浏览器可接受服务器返回的文件类型为text/html)

Accept-Encodig:指定压缩方法,是否支持压缩,支持什么压缩方法(gzip、deflate)

Accept-Language:浏览器申明自己的接收语言

User-Accept:告知服务器客户端使用的操作系统与浏览器的名称和版本

Accept-chareset:浏览器申明自己接收的字符集。如gb2312,UTF_8

3、Cookie/Login头域

Cookie:将cookie的值发送给服务器

4、Entity头域

Content-Length:发送给HTTP服务器的数据长度

Content-Type:决定文件接收方将以什么形式、什么编码读取此文件

5、Miscellaneous头域

Referer:提供了Request的上下文信息,告诉服务器我是从哪个链接过来的

A------>B(B的服务器从Referer中统计有多少用户是从A过来的)

6、Transport头域

connection:Keep—alive            TCP连接不会关闭

connection:close                     一个Request完成后,TCP连接关闭

7、Host:发送请求时,该报头域是必需的。主要用于指定被请求资源的Internet主机和端口号,通常从HTTP URL 中提取出来

二、HTTP Response header

1、Cache头域

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

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

2、Cookie/Login头域

P3P:用户跨域设置cookie,可以解决iframe跨域访问cookie的问题

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

3、Entity头域

ETag:与if-None-Match配合使用

Last-Modified:用于指示资源的最后修改日期和时间

Content-Type:Web服务器告知浏览器自己响应对象的类型和字符集

Content-Length:指明实体正文长度,以字节方式存储的十进制数字表示。在数据下行中,要预先在服务器中缓存所有数据,然后所有数据一并发给客户端

Content-Encoding:Web服务器表明自己用了什么压缩方式(gzip、deflate)压缩响应中的对象

Content-Language:服务器告知浏览器自己响应的对象语言

4、Miscellaneous头域

Server:指明HTTP服务器的软件信息

X-Powered-By:表明网站是用什么技术开发的

X-AspNet-Version:如果网站是用Asp/Net开发的,这个header用来表明Asp/Net的版本

5、Transport头域

connection:Keep—alive            TCP连接不会关闭

connection:close                     一个Request完成后,TCP连接关闭

6、Location头域

Location:用于重定向一个新的位置,包括新的URL地址

三、网络分层(这个是顺手加上)

  下层只会向上层提供服务,但不会从上层获取服务。

1、OSI模型(从低到高)

物理层---->数据链路层---->网络层---->传输层---->会话层---->表示层---->应用层

2、TCP/IP模型(从低到高)

网络接口层------>网络层(IP)------>传输层(TCP、UDP)------>应用层(HTTP/FTP等协议)

3、实际应用中的因特网协议栈

物理层---->链路层---->网络层---->传输层---->应用层

四、HTTP认证过程

1、客户端发送HTTP Request给服务器;

2、Request中未包含Authorization header,服务器会返回一个401错误给客户端,且在Response中的header“www-Authenticate”中添加信息;

3、客户端将用户名和密码以base64加密后,放在Authorization中发送给服务器,认证成功;

4、服务器将Authorization header中的用户名和密码去除,进行验证。如果验证通过,将根据请求发送资源给客户端;

  HTTP OAuth认证:OAuth对于http来说,就是放在Authorization header中的不是用户名密码,而是一个token(令牌)。

  客户端的使用:客户端若要跟“使用基本认证的网站”进行交互,将用户名密码加载Authorization header中即可。

HTTP常见头域的更多相关文章

  1. HTTP头域列表与解释 之 request篇

    HTTP 头域是HTTP协议中请求(request)和响应(response)中的头部信息,其实就是HTTP通信的操作参数,告诉web服务器和浏览器怎样处理这个通信.HTTP头从一个请求信息或者响应信 ...

  2. 常见跨域解决方案以及Ocelot 跨域配置

    常见跨域解决方案以及Ocelot 跨域配置 Intro 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题.今天来介绍一下我们在Ocelot网关配置的跨域 ...

  3. HTTP协议头域详解

    HTTP协议头域详解 Requests部分 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html Accept-Charset 浏览器可以接受的字符编 ...

  4. P-Called-Party-ID 头域的应用说明

    P-Called-Party-ID 头域的适用场景 P-Called-Party-ID 适用于 UAS 须要知道在代理将目标改写为Contact 地址之前请求中Request-URI的目的AOR的情况 ...

  5. HTTP协议header头域

    HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内 容请参考RFC2616.HTTP协议采用了请求/响应模型.客 ...

  6. P-Called-Party-ID头域

    典型的proxy server在路由 INVITE 请求到目标时插入 P-Called-Party-ID 头域.该头域用 porxy 收到请求的 Request-URI 填写. UAS 从几个已注冊的 ...

  7. Postman系列二:Postman中get接口实战讲解(接口测试介绍,接口测试流程,头域操作)

    一:接口测试介绍 接口测试:就是针对软件对外提供服务的接口输入输出进行测试,以及接口间相互逻辑的测试,验证接口功能和接口描述文档的一致性. 接口测试好处:接口测试通常能对系统测试的更为彻底,更高的保障 ...

  8. Http头域字段详解

    HTTP(HyperTextTransferProtocol) 是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616.HTTP协议采用了请求/响应模型.客 ...

  9. 什么是Web缓存控制(基于HTTP头域)

    这是一篇转载的知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中.为了简要起见,某些实现方面的细节被简化或省略了.如果你更关心细节实现则完全不必耐心看完本文,后 ...

随机推荐

  1. 转:asp.net TreeView CheckChanged 事件浅谈

    http://blog.csdn.net/xiage/article/details/5128755 在开发中经常可以碰到类似的问题: 想通过一个树父节点的TreeNodeCheckChanged 事 ...

  2. MySQL源码分析:源码文件结构及主要数据结构

    原文地址:http://blog.itpub.net/30186219/viewspace-1481125/BUILD: 内含在各个平台.各种编译器下进行编译的脚本.如compile-pentium- ...

  3. 如何让页眉随章节的不同而变化(Word 2010)

    在一般情况下,我们将页眉设置完成后,所有章节的页眉都是一样的. 但在某些时候,我们需要让不同的章节拥有各自不同的页眉.那么该如何设置呢? 1. 我们以下图的文件为例,该文件一共包括4个实验,暂未设置页 ...

  4. WdatePicker.js开始日期和结束日期比较

    jQuery.validator.addMethod("endDate",       function(value, element) {           var start ...

  5. Linux常用命令学习3---(文件的压缩和解压缩命令zip unzip tar、关机和重启命令shutdown reboot……)

    1.压缩和解压缩命令    常用压缩格式:.zip..gz..bz2..tar.gz..tar.bz2..rar .zip格式压缩和解压缩命令        zip 压缩文件名 源文件:压缩文件   ...

  6. RHCS 6.5 由于resource-agents-3.9.2-40.el6版本过低导致rgmanager[61164]: [fs] umount failed - REBOOTING问题的解决

    問題描述: RHEL 6.5版本RHCS在disable或者relocate service的時候,會導致節點重啟,查看日誌顯示umount掛载點失敗,日誌如下: Nov 29 16:03:50 ph ...

  7. 在编译命令行中添加 /D_SCL_SECURE_NO_DEPRECATE

    问题:Add the option /D_SCL_SECURE_NO_DEPRECATE to the compilation command 解决方案:项目属性 –> 配置属性 –> C ...

  8. 疑问:line-height对非文字行内块的影响

    line-height:对子元素是非文字的行内块,表现出来的不是垂直居中.目前还不知道具体细节. 可以看出来两个东西不在一行.老师的解释是line-height对非文字元素解释不一样,但是我没懂细节. ...

  9. php 执行计划任务方式之 linux crontab 执行命令

    一.crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动c ...

  10. 2016 Multi-University Training Contest 1 C.Game

    Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...