http协议
请求数据包
1.请求行:请求类型/请求资源路径、协议的版本和类型
2. 请求头:一些键值对,一般由w3c定义,浏览器和web服务器之间都可以发送,表示某种特定的含义
3. 空行:请求头和请求体之间用一个空行隔开
4. 请求体:要发送的数据 例如:userNma=123&password=123&returnUrl=//...
例如:
#Request Headers
POST/address HTTP/1.1
Host:localhost:8030
Connecttion:keep-alive
Content-Length:16
Pragma:no-cache
Cache-Control:no-cache
Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
User-Agent:Mozilla/5.0
Content-Type:application/x-www-form-urlencoded
Accept:*/*
Accept-Encoding:gzip,deflate,br
Accept-Language:zh-CN,zh;q=0.9
#From Data
name = name&age = 11
含义:
Accept:指浏览器或者其他客户端可以接收的MIME文件格式,Servlet可以根据它判断并返回适当的文件格式
User-Agent:是客户端的浏览器的名称
Host:对应网址URL中的Web名称和端口号
Accept-Language:指出浏览器可以接收的语言种类,如en,或者en-us,指英语
connection:用来告诉服务器是否可以维护固定的http连接,http1.1使用keep-Alive为默认值,http1.0使用close为默认值,当浏览器需要下载多个文件时,用keep-alive不需要每次都建立连接
Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能
Referer:表明产生请求的网页URL,这个属性可以跟踪http请求是从哪个网页而来
Content-Type:用来表明request的类型内容
Accept-Charset;指出浏览器可以接收的字符编码
Accept-Encoding:指出浏览器可以接收的字符编码方式,编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度,浏览器在收到web响应之后先解码,然后在检查文件格式
get和post的区别
1.get直接在浏览器中输入,post需要工具发送请求
2.get用url或者cookie传参,post将数据放在body(table)中
3.get的URL由长度限制,post在table中写入,没有大小限制
4.post比get更安全,因为post的数据都在table中,而get的数据在URL中,可以被看见
5.get用来获取数据,post用来发送数据
响应数据包
1. 状态行:协议版本,数字形式的状态码和状态描述,各元素之间以空额分割
2. 响应头:包含服务器类型、日期、长度、内容类型等
3. 空行:响应头和响应体之间用空行隔开
4. 响应正文:程序处理后果,浏览器会将实体内容中的数据取出来,生成相应的页面
例如:
HTTP-Version Starus-Code Reason-Phrase
Server:Apache Tomcat/5.0.12
Date:Mon,60ct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Contnet-Length:112
name = name&age = 11
1.状态行
格式:HTTP-Version Starus-Code Reason-Phrase CRLF。其中,HTTP-Version表示服务器的HTTP协议的版本;Starus-Code表示服务器返回的响应状态码;Reason-Phrase表示状态码的文本描述。状态码由三位数字组成,第一个数字定义了响应的类别。
1xx:指示信息-表示请求已接收,继续处理
2xx:成功-表示请求已被成功接收、理解、接受
3xx:重定向-要完成请求必须进行更进一步的操作
4xx:客户端错误-请求语法错误或者请求无法实现
5xx:服务器错误-服务器未能实现合法的请求
2.响应头
喝请求报文的请求头类似。响应头也由键值对组成。响应头域允许服务器传递不能放在状态行的附加信息,这些主要描述服务器的信息和Request-URL进一步的信息。
Server:包含处理请求的原始服务器的软件信息
Date:服务器的日期
Content-Type:返回的资源类型(MIME)
Connecttion:连接方式
close:连接已经关闭
keep-alive:保持连接,在等在本次连接的后续请求
Cach-Control:缓存控制
Expires:设置过期时间
Set-Cookie:设置Cookie信息
3. 空行
作为内容分割,表示以下不再是响应头的内容
4.响应体
这个是服务器返回给客户端的响应信息