HTTP
什么是HTTP?
超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法
我们可以从以下几个方面来了解HTTP:
1.HTTP协议的主要特点
2.HTTP报文的组成部分
3.HTTP方法
4.get 和 post的区别
5.HTTP状态码
HTTP协议的主要特点
简单快速
每个资源(比如图片、页面)都通过 url 来定位。这都是固定的,在http协议中,处理起来也比较简单,想访问什么资源,直接输入url即可。
灵活
http协议的头部有一个数据类型,通过http协议,就可以完成不同数据类型的传输。
无连接
连接一次,就会断开,不会继续保持连接
无状态
客户端和服务器端是两种身份。第一次请求结束后,就断开了,第二次请求时,服务器端并没有记住之前的状态,也就是说,服务器端无法区分客户端是否为同一个人、同一个身份。有的时候,我们访问网站时,网站能记住我们的账号,这个是通过其他的手段(比如 session)做到的,并不是http协议能做到的。
HTTP报文的组成部分
HTTP方法
主要包含:
GET:获取资源
POST:传输资源
put:更新资源
DELETE:删除资源
HEAD:获得报文首部
get 和 post 比较常见,其他较少。
get 和 post的区别
http状态码
http状态码分类:
Content-Type
Content-Type 标头告诉客户端实际返回的内容的内容类型。
conten-type查询:https://www.runoob.com/http/http-content-type.html
HTTP通信传输
HTTPS
什么是HTTPS?
HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
PS:TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。
HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
通过抓包可以看到数据不是明文传输,而且HTTPS有如下特点:
1.内容加密:采用混合加密技术,中间者无法直接查看明文内容
2.验证身份:通过证书认证客户端访问的是自己的服务器
3.保护数据完整性:防止传输的内容被中间人冒充或者篡改
- 收方能够证实发送方的真实身份;
- 发送方事后不能否认所发送过的报文;
- 收方或非法者不能伪造、篡改报文。
HTTPS实现原理
AJAX
在讲Ajax之前我们先了解一下同步和异步。
同步和异步的概念
同步:必须等待前面的任务完成,才能继续后面的任务。
异步:不受当前任务的影响。
异步更新
我们在访问一个普通的网站时,当浏览器加载完HTML、CSS、JS以后,网站的内容就固定了。如果想让网站内容发生更改,就必须刷新页面才能够看到更新的内容。
可如果用到异步更新,情况就大为改观了。比如,我们在访问新浪微博时,看到一大半了,点击底部的加载更多,会自动帮我们加载更多的微博,同时页面并没有刷新。
试想一下,如果没有异步刷新的话,每次点击“加载更多”,网页都要刷新,体验就太不好了。
web前端里的异步更新,就要用到 Ajax
Ajax 的概念
在浏览器中,我们可以在不刷新页面的情况下,通过ajax的方式去获取一些新的内容。
Ajax:Asynchronous Javascript And XML(异步 JavaScript 和 XML)。它并不是凭空出现的新技术,而是对于现有技术的结合。Ajax 的核心是 js 对象:XMLHttpRequest。
一个完整的HTTP请求需要的是:
- 请求的网址、请求方法get/post。
- 提交请求的内容数据、请求主体等。
- 接收响应回来的内容。
Ajax的请求步骤
(1)创建异步对象。即 XMLHttpRequest 对象。
(2)使用open方法设置请求的参数。open(method, url, async)。参数解释:请求的方法、请求的url、是否异步。
(3)发送请求。
(4)注册事件。 注册onreadystatechange事件,状态改变时就会调用。
如果要在数据完整请求回来的时候才调用,我们需要手动写一些判断的逻辑。
(5)获取返回的数据。
XMLHttpRequest 对象详解
发送请求:
- open(method, url, async);
参数解释:
- method:请求的类型;GET 或 POST
- url:文件在服务器上的位置
- async:true(异步)或 false(同步)
POST请求注意:
- send(string); //string要发送的内容
- xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");//定义发送内容的格式
onreadystatechange 事件
注册 onreadystatechange 事件后,每当 readyState 属性改变时,就会调用 onreadystatechange 函数。
readyState:(存有 XMLHttpRequest 的状态。从 0 到 4 发生变化)
- 0: 请求未初始化
- 1: 服务器连接已建立
- 2: 请求已接收
- 3: 请求处理中
- 4: 请求已完成,且响应已就绪
status: - 200: "OK"。
- 404: 未找到页面。
在 onreadystatechange 事件中,当 readyState 等于 4,且状态码为200时,表示响应已就绪。
服务器响应的内容
- responseText:获得字符串形式的响应数据。
- responseXML:获得 XML 形式的响应数据。
如果响应的是普通字符串,就使用responseText;如果响应的是XML,使用responseXML。
JSON
JSON 的语法
JSON(JavaScript Object Notation):是ECMAScript的子集。作用是进行数据的交换。
语法更为简洁,网络传输、机器解析都更为迅速。
语法规则:
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
数据类型:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
JSON对象和字符串转换
JSON.parse():将JSON字符串转化为 js 对象
JSON.stringify():将 JS 对象转化为JSON字符串。