大学时学过这些,但基本忘记了,最近面试有遇到这样的需求,所以有回头重新学习一下。
HTTP协议是Hyper Text Transfer Protocol的缩写,又称为超文本传输协议。从名字中就可以看出,这是一种用于传输数据的协议。
HTTP不是单独存在的,它基于TCP/IP通信协议来传递数据的,它工作于客户端-服务端架构之上。
1.主要特点:
~ 简单快速:客户发送请求是只需要传送请求方法和路径。(方法用来规定客户与服务器的联系类型)
HTTP:1.0有三种方法:GET,POST,HEAD。
HTTP : 1.1 新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和COONNECT。
~ 灵活:HTTP允许传输任意类型的数据对象(html文件,图片文件,查询结果等),传输类型由Content-Type标记。
~ 无连接:含义:每次链接都有只处理一个请求的限制。服务器开始处理请求,收到客户应答后,立即断开连接。
~ 无状态:含义:HTTP协议对事物处理没有记忆能力,这就意味这如果后序处理需要前面的信息,就需要重传,这就导致传输数据量增大。当然,也有好处,当服务器不需要先前信息是它的应答就比较快。
2.工作原理:
1-客户端链接服务器。
2-发送HTTP请求。
3-服务器接收请求并返回HTTP响应。
4-释放TCP链接。
5-客户端浏览器解析HTML内容。
3.GET与POST
1.提交: GET:请求的数据会放在URL后(以?分割,参数间用&链接)
POST:提交的数据会放在HTTP包的包体中。
2.传输数据大小: GET:理论上没有限制,取决去操作系统的支持以及浏览器是否会限制。
POST:同上,但各个web服务器会对post提交数据的大小进行限制。
3. 安全性:由数据的提交方式就可以看出,GET的安全性要低于POST,用GET你的数据将会明文显示在URL中,如果你是登陆,那么用户名以及密码就很容易被他们获取(历史记录)。
4.获取变量的值:GET:用Request.QueryString来获取。
POST:用Request.Form来获取。
4.遇见状态码
---遇见过:
~ 200 (OK)表示客户端发来的请求被正常处理了。
~ 304 (Not Modifled)资源已找到,但未符合条件要求。
~ 400 (Bad Request )表示客户端请求有语法错误,不能被服务器理解。
~ 404 (Not Found)服务器没有请求的资源。
~ 500 (Intermal Server Error) 表示服务器发生不可预期的错误,无法完成客户端请求。
304-一般是你按条件查找,虽然查找了资源,但是不符合条件,可能条件写错,可以回头再检查一下。
400-之前遇到一次是因为请求还有空格会形成20%,导致此错误。
404-一般情况都是Url写错了。
500-就代表着爆炸了,当然也可能是服务器的问题。
---还未遇见:
~ 204(No Content)表示请求处理成功,但没有资源可以返回。
~ 206 (Partial Content)对资源某一部分请求成功。
~ 301 (Moved Permanently)表示请求的资源已被分配了新的URL。
~ 302 (Fonud) 希望用户可以使用新的URL访问。
~ 303 (See Other)表示客户端应用GET获取资源。
~ 401 (UNauthorized)表示请求未经授权。
~ 403 (Forbidden)服务器收到请求,但是拒绝服务,通常会说明原因。
~ 503 (Service Unavailable)表示服务器当前不能处理客户端的请求,在一段时候后可能会恢复正常。