get方式请求的请求报文
1、请求首行 (请求方式 请求的资源路径,端口号后面的 get请求参数会在地址后面拼接 url?参数名1=值1&参数2=值2 http协议版本)
提交参数:参数名就是表单项name的属性值, 值就是表单项的value属性值
GET /06_web_HTTP/success.html?username=123213&password=123213 HTTP/1.1
2、请求头(里面都是键值对的形式,保存请求时的系统和浏览器信息)
Host: localhost:8080 主机地址
Connection: keep-alive 保持连接
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36
(用户的系统和浏览器信息,我们通常根据值判断用户使用的浏览器型号和版本)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 告诉服务器当前浏览器支持的数据类型 */*可以支持所有类型的数据
Referer: http://localhost:8080/06_web_HTTP/login.html 如果当前页面从其他页面点击跳转过来的就有referer[广告推广计费,防盗链]
Accept-Encoding: gzip, deflate, sdch, br 服务器在响应数据时可能返回一个压缩过的文件,此请求头告诉服务器浏览器支持哪些压缩格式
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4 当前系统支持的语言
get请求没有请求空行和请求体: 请求体是用来携带请求参数,get请求参数在url地址后面拼接了
post请求的请求报文
1、请求首行(请求方式 请求项目路径 http协议版本)
POST /06_web_HTTP/success.html HTTP/1.1
2、请求头
Host: localhost:8080
Connection: keep-alive
Content-Length: 30 请求体中数据的长度(请求参数)
Cache-Control: max-age=0 不缓存
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36
Content-Type: application/x-www-form-urlencoded 内容的类型(请求参数的编码格式)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://localhost:8080/06_web_HTTP/login.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8
3、空行
4、请求体(请求参数 多个参数之间使用&连接)
username=admin&password=123213
post请求和get请求的区别
1、get请求没有空行和请求体,因为提交的参数在url地址后面拼接
2、post请求有请求体和请求空行 post请求参数在请求体中携带
3、get请求相对不安全,post相对安全
4、get请求参数在地址栏后面携带,url地址栏数据大小限制为255个字符,所以get参数大小有限制
5、post参数大小没有限制(只要是上传文件只能使用post请求 )
6、post请求头中多了和参数相关的内容
响应报文
1、响应首行(协议版本 响应状态码[200代表响应成功,404资源找不到,500服务器内部错误,302重定向] 响应状态 )
HTTP/1.1 200 OK
2、响应头
Server: Apache-Coyote/1.1 (服务器内核版本)
Accept-Ranges: bytes (数据单位)
ETag: W/"157-1504593208325"
Last-Modified: Tue, 05 Sep 2017 06:33:28 GMT (访问资源文件的最后修改时间)
Content-Type: text/html (响应文件的类型,浏览器会根据此类型解析文件)
Content-Length: 157 (响应体内容大小)
Date: Tue, 05 Sep 2017 07:01:23 GMT (成功响应的时间)
3、空行
4、响应体(服务器给浏览器的响应体中的内容才是浏览器解析显示在页面中的内容)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
恭喜你,登录成功!!
</body>
</html>
简单的代码:
<form action="success.html" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>