HTTP属于是应用层最广泛使用的协议
俗称网址,唯一资源定位符,标示互联上的唯一的资源的位置
URL 最关键的四个部分
https://www.sogou.com/省略了端口号
省略端口的时候,浏览器会提供默认端口,http默认端口号80.https,默认端口是443
"/“是路径,没省略只是有点短 代表"根目录”
URL带有query string 是以**“?”**开头,以键值对的方式组织,键值对之间使用&分隔,键和值之间使用=分隔
https://www.sogou.com/sogou?query=%E7%BD%91%E9%A1%B5%E4%BC%A0%E5%A5%87(https://www.sogou.com/sogou?query=网页传奇)
URL有些字符是有特点含义的就需要对内容进行重新编码,如果不编码,直接写中文,可能浏览器就无法正确识别
包含三个部分,之间使用空格来区分
HTTP的方法(method) URL 版本号
方法描述请求的语义,在实际开发中,最常见的是两个GET ,POST
GET方法
GET是最常用的HTTP方法,常用于获取服务器上的某个资源,
在浏览器直接输入URL,此时浏览器就会发送出一个GET请求
HTML中link,img,script等标签,也会触发GET请求
GET请求特点:
POST方法
POST方法也是一种常见的方法,多用于提交用户输入的数据给服务器(登录页面)
通过HTML中的form标签可以构造POST请求,或者使用JavaScript的ajax也可以
构造POST请求
POST请求的特点
GET 请求和 POST请求底层都是基于TCP/IP协议实现的,使用任意一个,都可以实现客户端和服务端的双向交互
本质的区别
在规范中的,定义GET请求是用来获取资源的,就是进行查询操作的.而POST来进行添加,修改和删除等操作
在约定中,GET和POST的参数传递是不同,GET请求是将参数拼加到URL进行参数传递,而POST是将参数写入到请求正文传递的
非本质区别
- 缓存不同
GET请求一般会被缓存,比如常见的CSS,JS,HTML,请求都会被缓存,
而POST请求默认是不进程缓存的
- 参数长度不同
GET请求的参数是通过URL传递的,而URl的长度是有限制的
POST请求参数是存放在请求正文(request body)中的,没有大小限制
- GET回退和刷新不同
GET请求可以直接进行会退和刷新,不会对用户和程序产生任何影响
POST请求如果直接回滚和刷新将会把数据再次提交
- 历史记录不同
GET请求的参数会保存在历史记录中
POST请求的参数不会保留到历史记录中
- 书签不同
GET请求的地址可被收藏为书签
POST请求的地址不能被收藏为书签
header的整体的格式是"键值对"结构
每个键值对占一行,键和值之间使用分号分隔
HOST
描述了服务器所在的地址和端口
大概率和URL中是一样的
Content-Length
表示body中的数据长度
Content-Type
表示请求的body数据格式
如果是GET请求,没body,请求中没有值俩字段
如果是POST请求,有body,则必须有这俩字段
User-Agent(UA)
现在的User-Agent主要区分PC和移动
Referer
表示当前这个页面是从哪个页面跳转过来的
如果直接在浏览器中输入URL,或者直接通过收藏夹访问页面时是没有Referer的
Cookie是非常重要的header属性,本质上是浏览器给页面提供的本地储存数据的机制,网页默认是不允许访问你计数的的硬盘的,Cookie浏览器对于访问硬盘做出了明确的限制,Cookie是通过键值对的方式来组织数据的
Cookie从哪来的
Cookie中的数据是来自于服务器,服务器会通过HTTP响应的,报头部分(Set-Cookie字段),服务器来决定,浏览器Cookie要存什么
Cookie是在哪存的
可以认为是存在于浏览器中,存在于硬盘的,Cookie存的时候,是按照浏览器+域名维度进行细分的,不同的浏览器,各自存各自的Cookie,不同的浏览器不同域名,对应不同的Cookie
Cookie要到哪去的
回到服务器
客户端会通过Cookie来保存当前用户使用中间状态
当客户端访问浏览器的时候,就会自动的把Cookie的内容 带入到请求中,服务器就能够知道现在客户端是处于何种状态
当浏览器保存好Cookie之后,后序再给服务器发生请求的时候,就会自动带上这样的Cookie
表示header的结束标志
正文(body)
由程序员定义
HTTP协议,程序可以自定义的
- URL中的路径
- URL中的query string
- header中的键值对
- header中的Cookie的键值对
- body
状态码分类:
|
类别 原因短语 2XX Sucess(成功状态码) 请求正常处理完毕 3XX Rediretion(重定向状态码) 需要进行附加操作以完成请求 4XX Client Error(客户端错误代码) 服务器无法处理请求 5XX Server Error(服务器错误状态码) 服务器处理请求出错 |