Http协议
1.1 什么是Http协议
http协议:浏览器客户端和服务器端之间数据传输的格式规范
tcp/ip: 安全,发送不成功,重发。
UDP:速度快,广播
tcp/ip:关注的是数据是否传输成功
http:关注的是数据是否传输成功+在tcp/ip协议上封装的一层协议+关注的是数据传输的格式是否规范
1.2 telnet模拟HTTP请求
telnet:用于远程登录的命令
telnet 主机地址(localhost) 端口 8080 –>telnet localhost 8080(/n) –>ctrl+] (为看到回显的文字)
1.3 Http 请求
GET /myweb/hello HTTP/1.1 -->请求行
//接下来的都是请求头
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN
Connection: Keep-Alive
Cookie: JSESSIONID=FAE01B7A35FF7CF278364FE4A92CF329
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
-->一个空行
1.3.1 请求行 GET /myweb/hello HTTP/1.1
Http 协议版本
HTTP/1.0:当前浏览器客户端与服务器端建立连接后,只能发送一次请求,一次请求后关闭(telnet中模拟为遗失对主机的连接)
对最简单的 GET / HTTP/1.0
HTTP/1.1:当前浏览器客户端与服务器端建立连接后,可以在一次连接中发送多次请求(基本都是用HTTP/1.1)
对最简单的 GET / HTTP/1.1
请求资源
URL:统一资源定位符 http://localhost:8080/myweb/hello 只能定位互联网资源是URI的子集
URI:统一资源标识符 /myweb/hello 用于标记任何资源,可以使本地资源文件系统,也可以是局域网资源,互联网资源。
请求方式
常见请求方式:GET POST HEAD TRACE PUT CONNECT DELETE
常用请求方式:GET POST
表单提交:
<form method="GET/POST" action="提交处理地址">
</form>
GET VS POST
GET方式提交
1)地址栏(URI)会跟上参数数据,以?开头多个参数以&分割
<form class="layui-form" action="login.do" method="get">
<h2>用户登录</h2>
<div class="layui-input-block" style="width: 300px; margin: 200px auto; border: 2px solid gray; ">
<input class="layui-input" type="text" name="username" placeholder="用户名" required="" autofocus=""/><br/><br/>
<input class="layui-input" type="password" name="password" placeholder="密码" required="" autofocus=""/><br/>
<input id="login" class="layui-btn" type="submit" value="登录"/>
</div>
</form>
登录界面
GET 方式提交后 地址栏变化
2)GET提交参数数据有限制,不超过1KB.
3)GET方式不适合提交敏感密码
4)注意:浏览器直接访问的请求,默认方式是GET方式
POST方式提交
1)参数不会跟着URI后面,参数而是跟在请求的实体内容中,没有?开头,多个参数以&分割
2)POST提交的参数数据没有限制
3)POST方式提交敏感数据
另外,还有另一个非功能层面上的考虑,但其实也是HTTP当初在设计师区分GET和POST的目的之一,就是按请求是否为等幂操作来决定使用GET或POST。所谓是否为等幂操作,就是请求的操作是否改变服务器状态,同一个操作操作数次,是否传回同样的结果。
GET请求应该用于等幂操作(GET请求纯粹取得资源)
POST请求应该用于非等幂操作(POST请求可能会影响服务器上的数据或状态)
好困,未完待续。。。