HTTP复习
2017-02-09 18:43:18 0 举报
HTTP(超文本传输协议)是一种用于传输超媒体文档(例如HTML)的应用层协议。它是Web的核心,负责浏览器和网站服务器之间的通信。HTTP使用TCP/IP协议作为其传输层协议,通常在TCP 80端口上进行通信。HTTP请求由客户端发送到服务器,服务器响应请求并返回数据给客户端。HTTP协议支持多种请求方法,如GET、POST、PUT和DELETE等,用于执行不同的操作。此外,HTTP还具有状态管理机制,通过设置Cookie和Session来实现用户状态的跟踪和管理。总之,HTTP是Web开发中不可或缺的基础技术之一。
作者其他创作
大纲/内容
条件GetHTTP条件GET是HTTP协议为了减少不必要的带宽浪费,提出的一种方案。1. HTTP条件GET使用的时机? 客户端之前已经访问过某网站,并打算再次访问该网站。2. HTTP条件GET使用的方法? 客户端向服务器发送一个包询问是否在上一次访问网站的时间后是否更改了页面,如果服务器没有更新,显然不需要把整个网页传给客户端,客户端只要使用本地缓存即可,如果服务器对照客户端给出的时间已经更新了客户端请求的网页,则发送这个更新了的网页给用户。第一次请求时,服务器返回请求数据,之后的请求,服务器根据请求中的If-Modified-Since字段判断响应文件有没有更新,如果没有更新,服务器返回一个304 Not Modified响应,告诉浏览器请求的资源在浏览器上没有更新,可以使用已缓存的上次获取的文件。如果服务器端资源已经更新的话,就返回正常的响应。
Transfer-EncodingTransfer-Encoding是一个用来标示HTTP报文传输格式的头部值。尽管这个取值理论上可以有很多,但是当前的HTTP规范里实际上只定义了一种传输取值--chunked。如果一个HTTP消息(请求消息或应答消息)的Transfer-Encoding消息头的值为chunked,那么,消息体由数量未定的块组成,并以最后一个大小为0的块结束。注意:* chunked和multipart两个名词在意义上有类似的地方,不过在HTTP协议当中这两个概念则不是一个类别的。multipart是一种Content-Type,标示HTTP报文内容的类型,而chunked是一种传输格式,标示报头将以何种方式进行传输。* chunked传输不能事先知道内容的长度,只能靠最后的空chunk块来判断* chunked的优势在于,服务器端可以边生成内容边发送,无需事先生成全部的内容。HTTP/2 Transfer-Encoding:chunked不支持,因为有自己的streaming传输方式
客户端
GET和POST对比GET:1. 在请求URL后面以?的形式跟上发给服务器的参数,多个参数之间以&隔开,比如:http://www.test.com/login?username=123&pwd=234&type=JSON2. 由于浏览器和服务器对URL长度有限制,因此在URL后面附带的参数是有限制的,通常不能超过1KBPOST:1. 发给服务器的参数全部放在请求体中2. 理论上,POST传递的数据量没有限制(具体还得看服务器的处理能力)GET和POST的选择1. 如果要传递大量数据,比如文件上传,只能用POST上传2. GET的安全性比POST要差些,如果包含机密、敏感信息,建议使用POST3. 如果仅仅是索取数据(数据查询),建议使用GET4. 如果是增加、修改、删除数据,建议使用POST
HTTP通信过程-响应客户端向服务器发送请求,服务器应当作出响应,即返回数据给客户端HTTP协议规定:1个完整的HTTP响应中包含以下内容状态行:包含了HTTP协议版本、状态码、状态英文名称HTTP/1.1 200 OK响应头:包含了对服务器的描述、对返回数据的描述Server:Apache-Coyote/1.1 // 服务器的类型Content-Type:image/jpeg // 返回数据的类型Content-Length:56811 // 返回数据的长度Date:Mon,23 Jun 2014 12:54:52 GMT // 响应的时间实体内容:服务器返回给客户端的具体数据,比如文件数据
会话跟踪:1. 什么是会话? 客户端打开与服务器的连接发出请求到服务器响应客户端请求的全过程称之为会话。2. 什么是会话跟踪? 会话跟踪指的是对同一个用户对服务器的连续的请求和接受响应的监视3. 为什么需要会话跟踪? 浏览器与服务器之间的通信是通过HTTP协议进行通信的,而HTTP协议是“无状态”协议,它不能保存客户的信息,即一次响应完成之后,连接就断开了,下一次的请求需要重新连接,这样就需要判断是否是同一个用户,所以才有会话跟踪技术来实现这种要求。会话跟踪常用的方法:* URL重写 URL是Web上特定页面的地址,URL重写的技术就是在URL结尾添加一个附加数据以标识该会话,把会话ID通过URL的信息传递过去,以便在服务器端进行识别不同的用户。* 隐藏表单域 将会话ID添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示* Cookie Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,客户端进行保存,以便下次使用。 客户端可以采用两种方式来保存这个Cookie对象,一种方式是保存在客户端内存中,称为临时Cookie,浏览器关闭后这个Cookie对象将消失。另外一种方式是保存在客户机的磁盘上,称为永久Cookie。以后客户端只要访问该网站,就会将这个Cookie再次发送到服务器上,前提是这个Cookie在有效期内,这样就实现了对客户的跟踪。Cookie是可以被禁止的。* Session: 每一个用户都有一个不同的额session,各个用户之间是不能共享的,是每个用户所独享的,在session中可以存放信息。 在服务器端会创建一个session对象,产生一个sessionID来标识这个session对象,然后将这个sessionID放入到Cookie中发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端进行识别不同的用户。 Session的实现依赖于Cookie,如果Cookie被禁用,那么session也将失效
1.请求行2.请求头3.请求体
1.状态行2.响应头3.实体内容
HTTP通信过程-请求HTTP协议规定:1个完整的由客户端发给服务器的HTTP请求中包含以下内容请求行:包含了请求方法、请求资源路径、HTTP协议版本GET /MJServer/resources/images/1.jpg HTTP/1.1请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息Host:192.168.1.105:8080 // 客户端想访问的服务器主机地址User-Agent:Mozilla/5.0(Macintosh;Intel Mac OS X 10.9) Firefox/30.0// 客户端的类型,客户端的软件环境Accept:text/html,*/* // 客户端所能接收的数据类型Accept-Language:zh-cn // 客户端的语言环境Accept-Encoding:gzip // 客户端支持的数据压缩格式请求体:客户端发给服务器的具体数据,比如文件数据
服务器
常见的响应状态码状态码 英文名称 中文描述 200 OK 请求成功301 . Moved Permanently 请求永久重定向302 Moved Temporarily 请求临时重定向304 Not Modified 文件未修改,可以直接使用缓存文件400 Bad Request 客户端请求的语法错误,服务器无法解析401 Unauthorized 请求未经授权403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应报文 中说明不提供服务的原因404 Not Found 服务器无法根据客户端的请求找到资源500 Internal Server Error 服务器内部错误,无法完成请求503 Service Unavailable 服务器目前无法使用(由于超载或者停机维护),通常这只是暂时状态
0 条评论
回复 删除
下一页