牛客C++项目相关基础知识汇总

在秋招准备项目时,对于牛客C++WebServer项目的基础理论知识进行了总结

HTTP

HTTP协议格式

1)HTTP请求

1.首行:[方法]+[url]+[版本]

**2.Header:**请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束

**3.Body:**空行后面的内容都是body,body允许为空字符串,如果body存在,则在Header中会有一个Content-length属性来标识Body的长度

注:前面三部分是一般是HTTP协议自带的,是由HTTP协议自行设置的,而请求正文一般是用户的相关信息或数据;如果用户在请求时没有信息要上传给服务器,此时请求正文就为空字符串。

  • 请求报头内容组成:

1.Host:请求的资源在哪个主机的端口上

2.Connection:该请求支持长连接(heep_alive)

3.Content-Length:正文内容长度

4.Content-Type:数据类型

5.User-Agent:声明用户的操作系统和浏览器版本信息

6.Accent:发起了请求

7.Referer:当前页面是从哪个页面跳转过来的

8.Accept-Encoding:接受的编码

9.Accept-Language:接受的语言类型

10.Cookie:用于在客户端存储少量信息,通常用于实现会话(session)功能

  • HTTP如何进行解包

1.请求行和请求报头是HTTP的报头信息,而这里的请求正文实际就是HTTP的有效载荷,而请求当中的空行起到分离报头和有效载荷的作用

2.读取一个请求时,通过报头中的Content-Length(正文的长度)来精准控制读取该请求正文的长度,从而将连续的几个请求进行分开。

2)HTTP响应

  • 响应格式视图:

  • 响应格式组成:

1.状态行:[版本号]+[状态码]+[状态码解释]

2.响应报头Header:请求的属性,冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束

3.相应正文Body:空行后面的内容都是body,body允许为空字符串,如果body存在,则在Header中会有一个Content-length属性来标识Body的长度;如果服务器返回了一个html界面,那么html页面内容就在body中。

HTTP的方法

最常见的是Get方法和Post方法

  • GET方法和POST方法对比:

1.GET方法一般用于获取某种资源信息,而POST方法一般用于将数据上传给服务器,上传数据时也有可能使用GET方法,比如搜索提交数据时

2.GET方法和POST方法都可以带参:GET方法通过url传参的;POST方法是通过正文传参的

3.POST通过正文传参能传递更多参数,GET方法通过url传参,url的长度是有限的,所以GET方法传参有限

4.POST方法传参更加私密,因为GET方法将参数回显到url上,POST方法在正文中不会被别人轻易看到,但是实际两种方法都不安全,POST方法传参可以被截取,要做到安全只能通过加密来完成

HTTP的状态码

在开发一个网站之后,用户通过URL对资源进行操作,服务端要告诉用户交互的结果。一个较好的方法就是遵循HTTP协议,使用请求相应的HTTP状态码来进行判断。

  • HTTP的状态码:
状态码 类别 原因短语
1XX Informatonal(信息性状态码) 接受的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值