目录
1.了解HTTP协议
HTTP (HyperText Transfer Protocol, 超文本传输协议) 是一种应用非常广泛的 应用层协议.
所谓“超文本”的含义,就是传输的内容不仅仅是文本(比如html,css这个就是文本),还可以是一些其他资源,比如图片,视频,音频等二进制 的数据
2.HTTP协议的报文格式
1)请求报文格式
首行:【方法】【URL】【版本】
空行
Body:空行后面的内容为Body
2)响应报文格式
首行:【版本号】【状态码】【状态码的解释】
Header:请求的属性
空行
Body:空行后面的内容Body
3)报文格式的注意事项
1.首行的内容之间有一个空格
2.请求的属性是使用冒号分割是键值对
每组属性之间使用\n分割
遇到空行表示Header部分结束
3.Body允许为空
如果Body存在,Header中会有一个Content-Length属性来标识Body的长度
4.协议格式总结
3.认识URL
1)分析一个具体的URL
https://dict.youdao.com/result?word=1&lang=en
https:协议方案名
user:pass:登录信息,目前一般会省略
dict.youdao.com:服务器地址,此处是一个“域名”,域名会通过DNS系统解析成一个具体的IP地址
端口号:目前一般会省略,http协议默认使用80端口,https协议默认使用443端口
/result:带层次的文件路径
Word=1&lang=en:查询字符串(query string),本质是一个键值对结构,键值对之间使用&分割,键和值之间使用=分割
片段标识:此URL中省略了片段标识,片段标识主要用于页面跳转
2)URL中可省略的部分
协议名:可以省略,省略后默认为http://
ip地址/域名:在HTML中可以省略,省略后表示服务器的ip/域名与当前的HTML所属的ip/域名一致
端口号:可以省略,省略后如果是http协议,端口号自动设为80;如果是https协议,端口号自动设为443
带层次的文件路径:可以省略,省略后相当于/,有些服务器会在发现/路径的时候自动问/index。html
查询字符串:可以省略
片段标识:可以省略
3)关于URL encode和URL decode
像“/ ? : = &”等这样的字符,已经被URL当做特殊意义理解了,因此这些字符不能随意出现
把特殊字符,转换成转义字符 => URL encode
把转义字符,还原成原来的字符 => URL decode
4.HTTP请求(Request)
1)GET方法
构造HTTP GET请求的情况
1.直接在浏览器中输入URL
2.HTML中的link,img,a,script标签等
3.from表单
4.ajax
5.使用Java代码/其他的库
6.通过Linux下的wegt/curl
7.通过第三方工具,postman这类工具
GET请求的特点
1.首行的第一部分为GET
2.URL的query string 可以为空,也可以不为空
3.header部分有若干个键值对结构
body部分为空(也可以不为空)
2)POST方法
构造HTTP POST请求的情况
1.form表单
2.ajxa
3.第三方工具
POST请求的特点
1.首行的第一部分为POST
2.URL的query string 一般为空(也可以不为空)
3.header部分有 若干个键值对结构
4.body部分一般不为空,body内的数据格式通过header中Content-Type指定body的长度由header中的Content-Length指定