URL是浏览器寻找信息时所需的资源位置,通过URL,应用程序才能找到并使用共享因特网上大量的数据资源
协议:数据格式的约定
域名:基于DNS解析为IP
IP:网络中定位主机的地址(逻辑地址)
PORT:端口号,定位主机主机唯一的进程/应用程序
url是全路径
uri包含url和相对路径
输入域名直接访问就是/这个路径的资源
浏览器中不输入端口号由于http协议的默认端口是80
url请求数据:请求路径?key1=value1&key2=value2
urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%。
转义的规则如下:
将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY
urldecode()函数用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符
Request
首行: [方法] + [url] + [版本]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个ContentLength属性来标识Body的长度;
Response
首行: [版本号] + [状态码] + [状态码解释]
Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个ContentLength属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在body中.
重要三点:
- GET请求的数据只能在url中,POST请求的数据可以放啊爱url或者请求体中
- url长度有限,GET请求的数据不能太多,并且url中只能传ASCII码字符.POST请求没有限制ASCII码值或二进制数据
- 安全性post可以存放在请求体重相对的安全
- 其余可补充
- Content-Type:数据类型(text/html)等
- Content-Length:Body的长度
- Host:客户端告知服务器,所请求的资源是在哪个主机的端口上
- User-Agent:声明用户的操作系统和浏览器版本信息
- referer:当前页面是从哪个页面跳转过来的
- location:搭配3xx状态码使用,告诉客户端接下来要去哪里访问
- Cookie用于客户端存储少量信息,通常用于实现回话(session)的功能