C++面试宝典:HTTP概述

1、http协议的定义

http(Hypertext transfer protocol)超文本传输协议,通过浏览器和服务器进行数据交互,进行超文本(文本、图片、视频等)传输的规定。也就是说,http协议规定了超文本传输所要遵守的规则。

http是无状态协议

HTTP无状态协来议是指协议对于事务处理没有记忆能力。服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这源样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就度较快。

2、http的报文头部有什么内容

当你在浏览器地址栏里键入一个url,你的浏览器将会类似如下的http请求:

GET /tutorials/other/top-20-mySQL-best-practices/ HTTP/1.1
Host: net.tutsplus.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1;
en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept:text/HTML,application/XHTML+XML,application/xml;q=0.9,/;q=0.8
Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300
Connection: keep-alive Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
Pragma: no-cache Cache-Control: no-cache

第一行被称为“Request Line” 它描述的是这个请求的基本信息,剩下的就是HTTP headers了。
请求完成之后,你的浏览器可能会收到如下的HTTP响应:

HTTP/1.x 200 OK Transfer-Encoding: chunked Date: Sat, 28 Nov 2009
04:36:25 GMT Server: LiteSpeed Connection: close X-Powered-By: W3
Total Cache/0.8 Pragma: public Expires: Sat, 28 Nov 2009 05:36:25 GMT
Etag: “pub1259380237;gz” Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8 Last-Modified: Sat, 28 Nov 2009
03:50:37 GMT X-Pingback: http://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzip Vary: Accept-Encoding, Cookie, User-Agent

2.1 请求头(Request):

Accept:text/html application/xml 告诉服务器客户端浏览器这边可以出里什么数据;
Accept-Encodeing:gzip 告诉服务器我能支持什么样的压缩格式
accept-language:告诉服务器浏览器支持的语言
Cache-control:告诉服务器是否缓存
Connection:keep-alive 告诉服务器当前保持活跃(与服务器处于链接状态)
Host:远程服务器的域名
User-agent:客户端的一些信息,浏览器信息 版本
referer:当前页面上一个页面地址。一般用于服务器判断是否为同一个域名下的请求

2.2 返回头(response-header):

cache-control:private/no-cache:私有的不需要缓存/no-cache也不需要缓存
connection:keep-live:服务器同意保持连接
content-Enconding:gzip:除去头的剩余部分压缩返回格式
content-length:内容长度
content-type:text/css;返回内容支持格式
Date: 时间
server:ngnix 服务器类型
set-Cookie:服务器向客户端设置cookie 第一次访问服务器会下发cookie当作身份认证信息,第二次访问服务器再把cookie送给服务器,可以当作认证信息
last-modified: 时间戳 当浏览器请求时先把这个时间戳发送给服务器,服务器判断是否过期。判断过etag在向服务器请求带有if-modefidied-since:服务器判断是否过期未过期返回304,过期返回200
expires 也是时间戳判断缓存用
etag:版本专有的加密指纹。(有的网站不用,并非必须)优先检查 etag 再检查 last-modified 的时间戳。向服务器请求带if-none-match,服务器判断是否过期未过期返回304,过期返回200
// 注释:第一次请求出来的数据先进行缓存协商,是否缓存expires,cache-control 缓存时间,etag,last-modified等
//注释:第多次访问的时候,浏览器先判断是否有缓存,是否过期
//未过期:直接从缓存中读取。

3、HTTP请求方法

在这里插入图片描述

4、http响应状态码

状态码是用来告知客户端服务器端处理请求的结果。凭借状态码用户可以知道服务器是请求处理成功、失败或者是被转发;这样出现了错误也好定位。状态码是由3位数字加原因短语组成。3位数字中的第一位是用来指定状态的类别。共有5种。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值