1、什么是协议?
协议是计算机之间为了实现网络通信所必须共同遵守的规定或规则。
2、HTTP协议?
HTTP协议是超文本传输协议,它是从web服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
3、HTTP协议是无状态的
http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。
4、HTTP消息的结构
客户端发送一个HTTP请求到服务器的请求消息格式:请求行(request line)、请求头部(header)、空格和请求数据(body)四部分组成。
5、Get和Post方法的区别
1.GET提交的数据会放在URL之后, POST方法是把提交的数据放在HTTP包的ody中。
2.GET提交的数据大小有限,POST方法提交的数据没有限制。
3.GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
4.GET的安全性较差,POST比GET更安全。
6、HTTP状态码
Response消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息三部分组成。
状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response。
7、状态码分类
1XX- 信息型,服务器收到请求,需要请求者继续操作。
2XX- 成功型,操作被成功接收并处理。
3XX - 重定向,需要进一步的操作以完成请求。
4XX - 客户端错误,请求包含语法错误或无法完成请求。
5XX - 服务器错误,服务器未能实现合法的请求
8、常见的状态码
200 OK - 客户端请求成功。
302 Found - 重定向,请求的资源已经被分配了新的URL,只是临时的,这个URL还可能会发生改变。
304 Not Modified - 代表上次的文档已经被缓存了, 还可以继续使用。
400 Bad Request - 客户端请求的语法错误,服务器无法理解。
403 Forbidden - 服务器收到请求,但是拒绝提供服务。
404 Not Found - 请求资源不存在,可能是输入了错误的URL。
500 Internal Server Error - 服务器内部错误,无法完成请求。
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
9、HTTP Request header
1.Cache 头域
If-Modified-Since:把浏览器端缓存页面的最后修改时间发送到服务器去服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。
If-None-Match:If-None-Match和ETag一起工作,在Response中添加ETag信息,客户端再次请求资源,Request中加入if-None-Match(ETag的值),服务器验证ETag,若没改变返回状态码304,有改变,返回状态码200。
Pragma:防止页面被缓存。
Cache-Control:指定Response-Request遵循的缓存机制。public:可以被任何缓存所缓存。private:内容只缓存在私有缓存中。no-cache:所有内容都不会被缓存。
2.Client 头域
Accept: 浏览器可以接受的文件类型。
Accept-Encoding:指定压缩方法,是否支持压缩,支持什么压缩方法。
Accept-Language:浏览器申明自己的接收语言。
User-Accept:告知服务器客户端使用的操作系统与浏览器的名称和版本。
Accept-chareset:浏览器申明自己接收的字符集。
3.Cookie/Login 头域
Cookie:将cookie的值发送给服务器。
4.Entity 头域
Content-Length:发送给HTTP服务器的数据长度。
Content-Type:决定文件接收方将以什么形式、什么编码读取此文件。
5.Miscellaneous 头域
Referer:提供了Request的上下文信息,告诉服务器我是从哪个链接过来的。
6.Transport 头域
connection:Keep—alive TCP连接不会关闭。
connection:close 一个Request完成后,TCP连接关闭。
Host:发送请求时,该报头域是必需的。主要用于指定被请求资源的Internet主机和端口号,通常从HTTP URL 中提取出来。
10、HTTP Response header
1.Cache 头域
Date:生成消息的具体时间和日期。
Expires:浏览器在指定过期时间内使用本地缓存。
2.Cookie/Login 头域
P3P:用户跨域设置cookie,可以解决iframe跨域访问cookie的问题。
Set-Cookie:重要的header,用于把cookie发送到客户端浏览器,每一个写入cookie都会生成一个set-cookie。
3.Entity 头域
ETag:与if-None-Match配合使用。
Last-Modified:用于指示资源的最后修改日期和时间。
Content-Type:Web服务器告知浏览器自己响应对象的类型和字符集。
Content-Length:指明实体正文长度,以字节方式存储的十进制数字表示。在数据下行中,要预先在服务器中缓存所有数据,然后所有数据一并发给客户端。
Content-Encoding:Web服务器表明自己用了什么压缩方式压缩响应中的对象。
Content-Language:服务器告知浏览器自己响应的对象语言。
4.Miscellaneous头域
Server:指明HTTP服务器的软件信息。
X-Powered-By:表明网站是用什么技术开发的。
X-AspNet-Version:如果网站是用Asp/Net开发的,这个header用来表明ASP.NET的版本。
5.Transport 头域
connection:Keep—alive TCP连接不会关闭。
connection:close 一个Request完成后,TCP连接关闭。
6.Location 头域
Location:用于重定向一个新的位置,包括新的URL地址。