GET /demo01 HTTP/1.1
Host: localhost:9090
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=91B17CEC38787603CD1C26447126CD8E
解读:
1.请求行
HTTP/1.1
http1.0 当浏览器客户端和服务器建立连接之后,只能发送一起请求,一次请求连接后关闭。
http1.1 可以发送多次请求。
测试:如果一个html里面包含了3张图片,那么http协议每张图片都要连接一次,如图;
原因是使用了src标签,引用了另外的资源。
/demo01
请求资源。
URL:统一资源定位符。http://localhost:9090/testimgs.html
URI:统一资源标记符。/demo01 可以使https协议,也可以是files资源,可以标记任何资源,不含协议。
关系:URI+协议+(主机,端口,用户信息等) = URL
GET
请求方式:Get,Post,Head,Trace,Put,Connect,Delete
常用方式:get,post
表单提交
<form action=”url” method=”get/post”></form>
Get:参数会显示在地址栏中,提交参数数据有限制(不超过1kb),不完全
格式:?name=123&pwd=1334 问号开头,多个参数以&隔开
GET /testMethod.html?name=123&pwd=1231&%E6%8F%90%E4%BA%A4=%E6%8F%90%E4%BA%A4 HTTP/1.1
Post:参数不会显示
POST /testMethod.html HTTP/1.1
name=123&pwd=123&%E6%8F%90%E4%BA%A4=%E6%8F%90%E4%BA%A4(实体内容)
比较:
Get比post更快。https://blog.csdn.net/qq_28483283/article/details/80207674
Get会将数据缓存起来,post不能进行管道化传输
Get用于读,post用于更新数据,比较好。
本质区别,get是安全的,幂等的,post是不安全,不幂等的。因为这个才导致了get方法缓存,post不缓存,get方法快post方法慢,因为读操作的安全性高。
幂等:https://blog.csdn.net/qq_33082731/article/details/74230813
2.请求头
Accept:数据类型,意思是浏览器可以接受的数据类型
Accept-Charset:浏览器接受的编码格式
Accept-Encoding:浏览器接受的数据压缩格式
Accept-Language:浏览器接受的语言
Host:(参数必须)当前请求访问的目标地址(主机:端口)
If-Modified-Since:浏览器最后的缓存时间
Referer:当前请求来自于哪里
User-Agent:浏览器类型
Cookie:浏览器保存的cookie信息
Connection:close/keep-Alive:一次连接/保持连接
3.servlet编码获取请求头。(Tomcat将http请求的那些都已经打包成HttpServletRequest类。
)
3.2 响应
HTTP/1.1 200
Content-Type: text/html;charset=utf-8
Content-Length: 32
Date: Fri, 16 Nov 2018 07:01:58 GMT
解读:
1.响应行
HTTP/1.1 版本号
200 状态码
2.响应头
Location 表示重定向的地址
Server 表示服务器类型
Refresh 定时刷新
Content-disposition 告诉浏览器以下载方式打开资源
Set-cookie 服务器发送给浏览器的cookie信息
Expires
Cache-control
Pragma 以上三个都是通知浏览器不进行缓存
3.实体内容