当前位置: 代码网 > 服务器>网络>网络协议 > HTTP简介

HTTP简介

2024年08月03日 网络协议 我要评论
HTTP:HyperText Transfer Protocol,超文本传输协议。

http

http:hypertext transfer protocol,超文本传输协议

http版本

http/0.9

http于1990年问世。此时还没有作为正式的标准被建立。这时的http其实含有http/1.0之前版本的意思,因此被称为htttp/0.9。

http/1.0

http正式作为标准被公布是在1996年的5月,版本被命名为http/1.0,并记载于rfc1945。

http/1.1

1997年1月公布的http/1.1是目前主流的http协议版本。当初的标准是rfc2068,之后还发布了修订版rfc2616。

http/2.0

2014年12月将http/2.0标准提议递交至iesg进行讨论,于2015年2月17日被批准。http/2.0标准于2015年5月以rfc7540正式发表。

http的工作过程

  1. 用户从浏览器中输入域名网址(url),浏览器对网址解析,根据网址的含义生成请求消息
  2. 请求信息生成以后,浏览器需要向dns服务器查询域名对应的ip,委托操作系统向web服务器发送请求

http报文

http协议的请求和响应报文中,包含http首部

http请求报文,由方法、uri、http版本、http首部字段构成

http响应报文,由状态码(数字和原因短语)、http首部字段构成

请求报文和响应报文的结构如图所示:

http状态码

状态码的职责是当客户端向服务端发送请求时,描述返回的请求结果。

1xx,informational(信息姓状态码),表示接受的请求正在处理

2xx,success(成功状态码),表示正常处理完毕

  • 200 ok(表示从客户端发来的请求,服务器端被成功处理)
  • 204 no content(表示服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分)
  • 206 partial content(表示客户端进行了范围请求,而服务器成功执行了这部分的get请求)

3xx,redirection(重定向状态码),表示需要进行附加操作已完成请求

  • 301 moved permanently(永久性重定向)
  • 302 found(临时性重定向)
  • 303 see other(表示由于请求对应的资源存在着另一个uri,应使用get方法定向获取请求的资源)
  • 304 not modified(表示服务器端资源未改变,可直接使用客户端未过期的缓存)
  • 307 temporary redirect(临时重定向)

4xx,client error(客户端错误状态码),表示服务器无法处理请求

  • 400 bad request(表示请求报文中存在语法错误)
  • 401 unauthorized(表示发送的请求需要有通过http认证的认证信息,basic认证、digest认证)
  • 403 forbidden(表示对请求资源的访问被服务器拒绝了)
  • 404 not found(表示服务器上无法找到请求的资源)

5xx,server error(服务器错误状态码),表示服务器处理请求出错

  • 500 internal server error(表示服务器端在执行请求时发生了错误)
  • 503 service unavailable(表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求)

http首部字段类型

通用首部字段

  • cache-control,操作缓存的工作机制,例如cache-control:private,max-age=0,no-cache
  • connection,控制不再转发给代理的首部字段,管理持久连接
  • date,创建http报文的日期和时间
  • pragma,http/1.1之前版本的历史遗留字段,向后兼容规范定义的形式唯一,pragma:no-cache
  • trailer,会事先说明在报文主体后记录了哪些首部字段
  • transfer-encoding,规定了传输报文主体时采用的编码方式
  • upgrade,检测http协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议,如果指定,connection的值需要被指定为upgrade
  • via,为了追踪客户端与服务器之间的请求和响应报文的传输路径
  • warning,通常会告知用户一些与缓存相关的问题警告

请求首部字段

  • accept,通知服务器用户代理能够处理的媒体类型及媒体类型的相对优先级
  • accept-charset,通知服务器用户代理支持的字符集及字符集的相对优先级
  • accept-encoding,通知服务器用户代理支持的内容编码及内容编码的相对优先级
  • accept-language,通知服务器用户代理能够处理的自然语言集(中文或者英文等),以及优先级
  • authorization,通知服务器,用户代理的认证信息(证书值)
  • except,告知服务器,期望出现的某种特定行为
  • from,告知服务器使用用户代理的用户的电子邮件地址
  • host,告知服务器,请求的资源所处的互联网主机名和端口号
  • if-match,条件请求,服务器接收到附带条件的请求后,判断指定条件为真时,才会执行请求
  • if-modified-since,若字段值早于资源的更新时间,则希望能处理该请求
  • if-none-match,和if-match作用相反
  • if-range,字段值(etag或时间)和请求资源的etag值或时间一致时,则作为范围请求处理,反之,则返回全体资源
  • if-unmodified-since,与if-modified-since作用相反
  • max-forwards,通过trace方法或options方法,发送包含首部字段max-forwards请求时,该字段以十进制整数形式指定可经过的服务器最大数目
  • proxy- authorization,接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段proxy- authorization的请求,以告知服务器认证所需要的信息
  • range,告知服务器资源的指定范围
  • referer,告知服务器请求的原始资源的uri
  • te,告知服务器,客户端能够处理响应的传输编码方式及优先级
  • user-agent,将创建请求的浏览器和用户代理名称等信息传达给服务器

响应首部字段

  • accept-ranges,告知客户端,服务器是否能处理范围请求,可指定bytes或none
  • age,源服务器在多久前创建了响应
  • etag,告知客户端实体标识
  • location,将响应接收方引导至某个与请求uri位置不同的资源
  • proxy-authenticate,把由代理服务器所要求的认证信息发送给客户端
  • retry-after,告知客户端应该在多久之后再次发送请求
  • server,告知客户端当前服务器上安装的http服务器应用程序的信息
  • vary,对缓存进行控制
  • www-authenticate,用于http访问认证

实体首部字段

  • allow,通知客户端能够支持request-uri指定资源的所有http方法
  • content-encoding,告知客户端,服务器对实体的主体部分选用的内容编码方式
  • content-language,告知客户端,实体主体使用的自然语言(中文或者英文等)
  • content-length,表明实体主体部分的大小
  • content-location,给出与报文主体部分相对应的uri
  • content-md5,内容是一串由md5算法生成的值,目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
  • content-range,针对范围请求,告知客户端作为响应返回的实体的哪个部分符合范围请求
  • content-type,说明了实体主体内对象的媒体类型
  • expires,将资源的失效日期告知客户端。
  • las-modified,指明资源最终修改的时间

cookie相关的首部字段

  • set-cookie,当服务器准备开始管理客户端的状态时,会事先告知各种信息,

  • cookie,告知服务器,当客户端想获得http状态管理支持时,就会在请求中包含从服务器接收到的cookie,接收到多个cookie时,同样可以以多个cookie形式发送

其他首部字段

  • x-frame-options,属于http响应首部,用于控制网站内容在其他web网站的frame标签内的显示问题。主要目的是防止点击劫持(clickjacking)攻击
  • x-xss- protection,属于http响应首部,针对跨站脚本攻击(xss)
  • dnt,http请求首部,全称do not track,意为拒绝个人信息被收集
  • p3p,http响应首部,通过利用(the platform for privacy preferences,在线隐私偏好平台)技术,让个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com