HTTP协议
文章来自 shichang // Welcome!
主页
|
About Me
|
归档
|
标签
**HTTP协议:** 超文本传输协议,用在万维网上服务器与客户端浏览器之间进行超文本传输的协议。 工作方式为:客户端浏览器通过URL向HTTP服务器发送请求, HTTP的三个特点: 1.无连接:每次连接只处理一个请求,服务器处理完客户的请求收到应答后立即断开连接,节省传输时间 2.媒体独立:只要客户端和服务器明确要处理的数据内容,任何数据都可以通过HTTP发送 3.无状态:对事物处理没有记忆能力 **请求报文格式:**  第一行称为请求行, 其余行称为报头行 HTTP请求包含5个部分 1.请求方法: GET, POST, PUT, DELETE, HEAD, OPTIONS,TRACE 2.请求对应的URL地址;3.协议名称和版本号 4.报文头:包含若干个字段属性,格式为`属性名:属性值`,服务器通过报文头获取客户端信息 5.报文体:包含请求url后附带的参数数据,通过报文体来向服务器传递参数 **响应报文格式**  **1.请求方法:** GET:请求指定的页面信息,并返回实体主体 POST:向指定资源提交数据进行处理请求(提交表单或者上传文件),数据包含在请求体中,POST可以在服务器端建立资源或更新服务器已有资源 HEAD:类似于GET请求,要求返回的响应中没有具体内容,用于获取报文头 ,以上三个方法是HTTP1.0中仅有的三个方法 在HTTP1.1中添加了5个其他的方法: PUT:从客户端向服务器传送的数据取代指定的文档的内容(Update更新) DELETE:请求服务器删除指定的页面 CONNECT:预留给能够将连接方式改为管道方式的代理服务器(管道用于同一主机之间关系比较近的两个进程) OPTIONS:允许客户端查看服务器的性能,查询服务器的回送地址 TRACE:回显服务器收到的请求,主要用于测试或判断,跟踪到服务器的路径 <br> **2.报文头:** 常见的报文头字段属性有下面几种: Accept:告诉服务器,客户端接受什么类型的响应,html或是htm或是text等等,是一个或多个MIME类型的值 Cookie:网站为了辨别用户身份而储存在用户本地客户端的数据字段。可以实现网站与用户的交互,维护用户与服务器的会话状态。在登录时,cookie可以持有用户的账号和密码实现自动登录。有内存短时间cookie和硬盘长时间cookie。一个cookie隶属于一个session,通过jsessionid来识别 Referer:表示该请求是从哪个URL过来的,可用来监控网页 Accept-Language:表示客户端可以接受的响应的语言 User-Agent:表示用户的代理设备 Content-Type:页面响应类型,定义网络文件的类型和网页的编码,决定浏览器将以什么形式什么编码读取这个文件 Host:客户端主机地址 Content-Length:响应的长度 Connection:当前连接的控制选项,比如keep-alive, Upgrade等等 Cache-Control:缓存控制:比如no-cache设置客户端不缓存服务器的返回值 Cookie:cookie字段 <br> **3.HTTP状态码:** 常见的状态码: 200:请求成功 301:请求的地址被永久转移 302:临时地址转移 404:请求的资源不存在 500:内部服务器错误 505:服务器不支持请求的HTTP协议版本 **Question:关于put和post** put和post的区别,实际上两者的功能都可以上传数据到服务器上,但是对于更新和创建是有区别的,最主要的区别在于,post方法是非幂等性的,而put方法是幂等性的。(幂等就是,重复执行同一个方法带来的影响是相同的),如果使用非幂等的post方法连续创建两个文件,那么服务器上就会产生多个相同的文件,而使用put方法执行两次同一个资源的创建则最终服务器上只存在一个文件 put:如果服务器已经存在一个这个文件,则更新,并且返回200或者204给客户端表示修改成功。若不存在,并且该资源能够被请求的用户代理为新资源,则创建并且返回201创建成功给客户端。 post: **Question:session和cookie** session是解决HTTP协议无连接缺陷的手段,session最开始本是一个抽象的概念,开发者为了实现中断和继续,将user Agent和server之间的一对一的交互,抽象为“会话”,然后有了”会话状态“。现在的session一般指的是利用cookie和后端存储实现的维持会话的手段。session也可以用其他的物件来实现,session中包含了会话中的一些重要的信息,存储在服务器上,通过session ID来唯一标志和对应一个唯一用户,而cookie就是服务器经常用来下发给这个用户的附带了与这个用户绑定的sessionID的数据。下发时,将cookie添加在响应头中,作为一个HTTP报文头字段,下发后,存储在客户端的内存或者硬盘中。 当cookie被禁用时,可以将sessionID写在URL参数中发送给服务器
Pre:
ThoughtWorks面试
Next:
Java线程安全