HTTP

总结下HTTP在笔试面试中的考点,参考自各大博客、书籍及师兄师姐给的资料,持续更新。。。

1.HTTP协议

即超文本传输协议(Hypertext transfer protocol),是一个基于请求与响应模式的、无状态的、应用层协议,常基于TCP的连接方式,默认端口号为80,HTTPS默认端口号为443

2.常见的HTTP请求方法

GET,用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器

POST,用于传输信息给服务器,主要功能与GET方法类似

PUT,传输文件,报文主体中包含文件内容,保存到对应URI位置

HEAD,获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效

DELETE,删除文件,与put方法相反,删除对应URI位置文件

OPTIONS,查询相应URI支持的HTTP方法

3.HTTP状态码

由三位数字组成,第一个数组定义了响应类别

1xx,指示信息,表示请求已经接收,继续处理

2xx,成功,表示请求被成功接收、理解、接受

3xx,重定向,要完成请求必须进行更进一步的操作

4xx,客户端错误,请求有语法错误或请求无法实现

5xx,服务器错误,服务器未能实现合法请求

常见的列举以下

 

200 OK    客户端发来的请求在服务器端被正常处理

204 No Content    请求成功处理,但没有资源可返回,浏览器显示的页面不发送更新

206 Partial Content    客户端只想要一部分

 

301 Moved Permanently    永久性重定向

302 Found    临时性重定向,禁止POST改为GET

303 See Other    明确表示用户应该采用GET方法获取资源

304 Not Modified    客户端发送附带条件的请求,资源已找到但未符合条件

307 Temporary Redirect    临时重定向

 

400 Bad Request    客户端请求有语法错误,不能被服务器理解

401 Unauthorized    请求未经授权

403 Forbidden    服务器收到请求但是拒绝提供服务

404 Not Found    请求资源不存在,eg,输入错误URL

 

500 Internal Server Error    服务器发生不可预期的错误

503 Service Unavailable    服务器当前不能处理客户端请求,一段时间后可能恢复正常

4.HTTP请求

 

第一部分,请求行,说明请求类型,要访问的资源及HTTP版本,method表示+URI+version

第二部分,请求头部,紧接着请求行

第三部分,空行,请求头部后面的空行是必须的

第四部分,请求数据即主体

get例子

post例子

5.HTTP响应

第一部分,状态行,HTTP协议版本号、状态码、状态消息

第二部分,响应报头,说明客户端要使用的一些附加信息

第三部分,空行,必须

第四部分,响应正文

6.get和post的区别

浏览器地址栏呈现结果不同,真正的是向服务器端发起请求的格式不同

区别一:

get重点从服务器上获取资源,post重点在向服务器发送数据

区别二:

get传输数据是通过URL请求,以fiels=value形式,置于URL之后,并用?连接,多个请求间用&连接

post传输数据通过HTTP的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程是用户不可见的

区别三:

get传输的数据量小,因为URL长度受限制,但效率高

post可以传输大量数据,所以上传文件时用post

区别四:

get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等

post较get安全性高

区别五:

get只能支持ASCII字符,向服务器传的中文字符可能会乱码

post支持标准字符集,可以正确传递中文字符

 

7.HTTP1.1和HTTP1.0的主要区别

(1)长连接,HTTP1.0需要keep-alive参数告知服务器需要建立一个长连接,而HTTP1.1默认支持长连接

(2)节约带宽,HTTP1.1支持只发送header信息,不带body,如果客户端有权访问,服务器就返回100,否则返回401,客户如果接受100,就发送body,否则就不发送body,节约贷款

(3)host,HTTP1.1在请求消息的报文头中加入了host域

(4)ETag头,HTTP1.1中引入了ETag头,它的值entitytag可以用来唯一描述一个资源,请求消息中可以使用if-none-match头域来匹配资源的entitytag是否有变化

(5)Cache-control,HTTP1.1新增了Cache-control头域,支持一个可扩展的指令子集

(6)Warning头域,HTTP1.0只定义了16个状态码响应,对错误或警告的提示不够具体,HTTP1.1引入了一个头域,增加对错误或警告信息的描述,且新增了24个状态响应码

8.HTTP1.1和HTTP2.0主要区别

(1)多路复用,HTTP2.0采用多路复用技术,同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级,每个请求或响应可以看做一个流,每个流是并发或者并行处理的,互不影响,而HTTP1.1采用流水线处理方式,虽然一个连接可以发送多个请求或者响应,但是后面的流必须等待前面的流,容易阻塞

(2)二进制格式,错误少,效率高

(3)报头压缩,由于tcp是慢启动,需要几个来回才能确定消息的参数信息和包的信息,压缩报头能节省很多时间

(4)服务器将响应主动推送到客户端的缓存中:比如浏览一个网页时,服务器返回HTML,服务器发送js、css、图片等资源前需要等待浏览器解析HTML并相应,如果服务器主动推送这些静态数据将提高效率

9.当输入www.google.com时,页面发生了哪些变化

(1)域名解析,检查顺序为:浏览器自身DNS缓存、OS自身的DNS缓存、读取host文件、本地域名服务器、权限域名服务器、根域名服务器,如果有且没有骨气,则结束本次域名解析,域名解析成功后,进行后续操作

(2)tcp的3次握手建立连接

(3)建立连接后,发起HTTP请求

(4)服务器端响应HTTP代码,浏览器得到HTTP请求的内容

(5)浏览器解析HTML代码,并请求HTML代码中的资源

(6)浏览器对页面进行渲染,展现在用户面前

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值