1、HTTP事务

请求报文和响应报文,包括三部分:头行、头部、主体。
浏览器接受到响应报文后,将报文主体显示在浏览器上
2、请求报文格式

头行:三部分组成,http方法、主机地址、HTTP版本号
头部:许多键值对组成。accept浏览器端可以接受到的媒体类型;cache-control缓存策略;user-agent当前浏览器版本
主体:因为请求是get方法,所以请求体为空
3、响应报文格式

头行:http协议版本、http状态码、http状态码描述
头部:Expires缓存有效时间
主体:访问的是页面,所以是完整的XML文件
4、常用HTTP方法

get最常用方法
5、URL构成

协议,主机(主机名,端口),路径,查询字符串,hash
pathname/search/hash都是不必须的
6、常见HTTP状态码
7、Ajax :Asynchronous JavaScript and XML
XMLHttpRequest 对象
⑴Ajax通信流程

初始readyState为0,其他两个值为空

调用open()方法开启一个请求,但没有向服务器端发出请求
此时,readyState:1

调用send()方法,正式向服务器端发出请求
readyState:2

浏览器接收到服务器返回的数据
xhr的readyState属性变为3

浏览器结束请求
responseText变为相应的返回值,这里是一个XML文件
⑵AJAX调用示例
⑶open 开启一个请求以备发送,但不会向服务器端正式发起一个请求

open方法
url表示请求资源相对于当前文档的路径
⑷ setRequestHeader 调用open方法之后调用的,不必要一定调用。调用这个方法可以在请求体头部设置一些头部字段

如果当前请求是表单编码,将value值设为application/x-www-form-urlencoded
如果表单带文件上传,将value值设为multipart/form-data
⑸send 正式向服务器端发起请求调用的

send方法
⑹Ajax调用示例

在XMLHttpRequest2的标准里,还可以监听xhr.onload来代替xhr.onreadystatechange事件
⑺请求参数序列化

将查询参数作为字符串跟在URL后面
如果查询参数是对象,应该将对象转化为字符串

将对象转化为字符串的函数
⑻GET请求

get方法,send中请求体为空
⑼POST请求
⑽ 同源策略
(上面的URL路径都是相对于当前文档的相对路径,这是受Ajax同源策略影响)
⑾跨域资源访问 :不满足同源策略的访问

同源策略会对做一些应用造成很多限制
⑿CORS

流程图
⒀其他跨域技术
⒁Frame代理
⒂JSONP
网友评论