文章目录
Http详解
一、http请求
http请求包括:请求行、请求头、请求体
1.post和get请求的区别
我们点开html的页面,填写请求参数后,客户端向服务器发送post或get请求是根据html中的method参数的。
选择post请求:<form action="/Example04/index.jsp" method="post">
选择get请求:<form action="/Example04/index.jsp" method="post">
用户名:<input type="text" name="username"/></br>
密码:<input type="password" name="password"/></br>
<input type="submit" value="提交"/>
</form>
post请求的请求参数在请求体中,而get请求的请求参数在请求行的网址中,客户端的直接在网址中显示请求参数,所以不安全。
POST /Example04/index.jsp HTTP/1.1 请求行
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml,image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Referer: http://localhost:8080/Example04/form.html
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 30
Connection: Keep-Alive
Cache-Control: no-cache
username=zhangsan&password=123 请求体
GET /Example04?username=zhangsan&password=123 HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=5386A9443729D7EB0B61E38A9C7CF52F
2.http1.0和1.1的区别
客户端每次向服务器发送一次请求时,服务器端会每次都会相应一次,1.0版本在一次连接一次相应就会断开客户端和服务器的相应,而再次连接又会浪费资源。而1.1版本则会一直保存连接。请求体中的Connection: Keep-Alive则表示时1.1的请求响应保存不断开,Connection: close表示,客户端和服务器已经断开。
3.cookie和session
客户端在第一次打开服务器网页时,服务器会通过Set-Cookie设置客户端的cookie值(记录了session_id),该网页再次连接服务器时,会发送自己的cookie值,服务器就知道是同一个网页。而服务器端在给客户端发送也会创建一个session,而得到相同cookie不同服务器进程,就可以通过同一个session进行通信。
4.常见请求头
Accept:告诉服务端,该请求所能支持的响应数据类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer 先前网页的地址,防盗链,统计访问该服务器的网站来源
Referer: http://localhost/login.html
Cokkie:客户端的Cookie
Cookie: JSESSIONID=15982C27F7507C7FDAF0F97161F634B5
User-Agent:浏览器的属性
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Connection:表示客户端与服务连接状态;Keep-Alive表示持久连接,close已关闭
Connection: keep-alive
Host:请求的服务器主机名
Host: 39.108.107.149:8080
Accept-Encoding:浏览器通知服务器,浏览器支持的数据压缩格式。如GZIP压缩
Accept-Encoding: gzip, deflate
Accept-Language:浏览器通知服务器,浏览器支持的语言
Accept-Language: zh-CN,zh;q=0.9
二、http响应
1.响应格式:HTTP的响应报文也由三部分组成(响应行+响应头+响应体)
2.状态码
1xx:服务器就收客户端消息,但没有接受完成,等待一段时间后,发送1xx多状态码
2. 2xx:成功。代表:200
3. 3xx:重定向。
302(重定向,服务器没有该资源但指导资源位置,服务器就给出资源位置给客户端)
304(访问缓存,客户端缓存中有请求的数据,同时服务也没有修改该数据内容时,会发送304,表示客户端在自己的缓存中找)
4. 4xx:客户端错误。
404(请求路径没有对应的资源)
405:请求方式没有对应的doXxx方法
5. 5xx:服务器端错误。代表:500(服务器内部出现异常,语法错误等)
3.响应头
Set-Cookie 设置Http Cookie
Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Content-Type 返回内容的MIME类型
Content-Type: text/html; charset=utf-8
Content-Language 响应体的语言
Content-Language: en,zh
Content-Location 请求资源可替代的备用的另一地址
Content-Location: /index.htm
响应头和请求头格式大全