知识点:
- http简介
- http会话流程
- 调试工具
- http请求消息
- http响应信息
- http消息到其他细节
- get请求和post请求方式
- 其他细节
- Content-Type 详解
一.http简介
- WEB浏览器和WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是http协议。
- HTTP是hypertext transfer protocol(超文本协议)的简写,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。
- HTTP协议的版本HTTP/1.0、HTTP/1.1、HTTP-NG
二.http会话流程
- 浏览器与WEB服务器的连接是短暂的,每次连接只处理一个请求和响应。对于每一个页面的访问,浏览器与WEB服务器都要建立一个单独的连接。
- 浏览器到WEB服务器之间的所有通讯都是完全独立的分开和响应对。
三.调试工具
对于HTTP协议的学习,我们将借助谷歌浏览器FIREFOX的调试工具来实际观察浏览器和服务器之间传输数据的具体内容,快捷键F12。
四.http请求消息
请求消息 由 请求行,请求头,空行和请求数据4部分组成。(其中的一些消息头和实体内容都是可选的,消息头和和实体内容之间要用空行隔开。)
五.http响应信息
- 响应通常包括一个状态行、一些响应报头、一个空行和文档。(其中的一些消息头和实体内容都是可选的,消息头和实体内容要用空行隔开)
- 一个状态行:访问页面 http://127.0.0.1/listHero,可以看到响应代码是 200 OK,即表示响应成功。
http协议中的响应代码从 1xx ~ 5xx,一共有41种,不过很多状态码很少会接触到。- 200 表示响应成功了,比如打开页面, 就会看到200响应码。
- 301 表示客户端跳转,永久性的跳转。
- 302 客户端跳转,临时性的跳转。301和302的区别主要在搜索引擎对页面排名的时候有影响
- 304 表示资源未被修改。
- 404表示访问的页面不存在。
- 更多状态码及解析:HTTP状态码详解
HTTP协议系列教材 (五)- 通过Firefox火狐调试工具观察 HTTP常见 响应代码
六.http消息到其他细节
- 响应消息的实体内容就是网页文件的内容,也就是在浏览器中使用查看源文件的方式所看到的内容。
- 一个使用get方式的请求消息中不能包含实体内容,只有使用post、put和delete方法的请求消息中才可以包含实体内容。
七.get请求和post请求方式
- 使用get方式传递参数
- 在浏览器地址中输入某个URL地址或单击网页上的一个超链接,浏览器发出的HTT请求消息的请求方式为get。
- 如果网页中的<form>表单元素的method属性被设置为“GET”,浏览器提交这个form表单时生成的HTTP请求消息的请求方式也为get。
- 使用get方式传递的数据量一般限制在1KB以下。
- 使用get请求方式给WEB服务器传递参数的格式:
http://www.baidu.com/comter.jsp?name=yi&password=123
- 使用post方式传递参数
- post请求方式主要用于向WEB服务器端程序提交form表单中的数据:form表单的method设置为POST。
- post请求方式将各个表单字段元素机器数据为HTTP消息的实体内容发送给WEB服务器。传送的数据量要比使用get方式传送的数据量大的多。
- 使用post请求方式给WEB服务器传递参数的格式:
http://www.baidu.com/counter.jsp/
get请求和post请求的区别?
- get请求用来从服务器上获得资源;而post是用来向服务器提交数据;
- 传送方式:get将表单中数据按照name=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;
post是将表单中的数据放在HTTP协议的请求头或者消息体中,传递到action所指向URL; - 传送长度:get传输的数据要受到URL长度限制(1024字节,也就是1KB);而post可以传输大量的数据,上传文件通常使用post的方式;
- 传送安全性:使用get时参数会显示在地址栏上,如果这些数据不是敏感数据,那么可以使用get;对于敏感数据还是应该使用post;
- get使用MIME类型application/x-www-form-urlencoded的URL编码(也叫百分号编码)文本的格式传递参数,保证被传送的参数遵循规范的文本组成,例如一个空格的编码是“%20”。
八.其他细节
一.Content-Type 详解
Content-Type 详解_leoss.H的博客-优快云博客_content-type
设置Content-Disposition,可以定义文件名
response.setHeader("Content-Disposition", "attachment;filename=test.xlsx");
Content-Type(内容协议),一般指的是网页中存在的 Conteng-Type ,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是我们经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。
Content-Type 标头告诉客户端返回内容的类型。
Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=something
常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
text/javascript:js格式
以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式 application/json: JSON数据格式
application/pdf:pdf格式 application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
content-type在线查询工具:https://tool.oschina.net/commons