1、为什么讲http?
因为ajax内部操作的就是http
什么是http?
超文本传输协议 hypertext transport protocol
URL 统一资源定位符
port(端口):http默认port为80 https默认port为443
param:param1=value1¶m2=value2...改格式不能更改 => URL格式
<scheme>://<username>:<password>@<hostname>:<port><path>?<querystring>#<hash>
?开始的时候用问号
&来分割参数的
http://kongpengfang:123456@baidu.com
param(参数)
dns解析:
把一个域名解析成一个ip的过程
=============================================================
http的构成
网络七层协议
1、物理层 网卡
2、链路层 网卡驱动
3、网络层 ip
4、传输层 tcp/udp 传输协议
5、会话层 保持会话/断开会话 系统OS xxx.msi
6、加密层 加密解密 对称加密/非对称加密
7、应用层 http https ftp smtp(邮件的发送)等等等
https:加密过的http 用的是非对称加密 RSA算法
实现原理是:http+ssl/tsl
=============================================================
http是一个事务,事务和事件的区别?
事务是事件的集合,包含n+1个事件。只有当这n+1个事件全部完成的时候,事务才算成功,否则事务就算做失败。
http包含两个时间 request和response 必须先有请求再有响应,顺序是固定的
response和request都包含哪些部分?
1、起始行 这个请求或响应的摘要信息 http method、request URL、http version
2、首部 这个请求或响应的基本信息 固定格式:key:value 请求首部、扩展首部、实体首部、通用首部
3、主体 这个请求或响应的数据的承载主体 返回的数据
=============================================================
http版本号
0.9 1.0 1.1 2.0
http1.1和2.0的区别?赶集网 美团网
1、多路复用:减少tcp请求 把多个tcp合并成一个
2、首部压缩:把多个首部压缩
3、服务器推送:不用request也可以response
=============================================================
什么是mimeType?
作用:标记数据类型的
因特网多媒体邮件扩展
标示内容是什么格式。告诉浏览器或者server如何解析该数据
http的请求和相应都含有一个mimeType字段 =>content-type(通用首部)
请求可以不带content-type但是响应一定要带content-type.否则浏览器无法正确解析该数据
都有一个固定的格式
html text/html
css text/css
js text/javascript
png image/png
jpg image/jpeg
mp4 video/mp4
mp3 video/mp3
二进制 application/octet-stream
json application/json
格式:大类型/小类型
=============================================================
页面级别的同步请求和异步请求:
同步请求:当前页面内的任何一个操纵都需要重新刷新页面。jsp asp asp.NET 举例:http://www.bjgjj.gov.cn/xwdt/index_2.html
异步请求:不需要每次刷新页面,只需要加载指定的内容即可。 举例:https://www.taobao.com/
=============================================================
http method(方法):
1、get 从服务器获取资源
2、post 向服务器发送资源
3、put 向服务器推送资源
4、delete 告诉服务器删除某个资源
5、head 告诉服务器返回数据时不需要返回响应主体,只返回起始行和首部即可。
6、options 检测服务器支持哪些http方法
GET方法的特点:
一、没有请求主体。
二、会把查询条件格式化为URI的格式拼接到URL后面。
三、有大小限制,因为浏览器对url的长度有限制,所以造成了get请求有大小限制。chrome 8k IE 2K Firefox 7k。
四、明文发送,不安全,安全性比较差。
五、容易被浏览器缓存。
六、浏览器默认全是get请求。
POST方法的特点:
一、有请求主体
二、没有大小限制,因为它把数据全部放到请求主体之中,而浏览器对请求主体是没有大小限制的。
三、不是明文发送,安全性较强。
四、不会被浏览器缓存。
PUT方法的特点:
一、有请求主体
二、没有大小限制,因为它把数据全部放到请求主体之中,而浏览器对请求主体是没有大小限制的。
三、不是明文发送,安全性较强。
四、不会被浏览器缓存。
五、成功返回状态码202。
DELETE方法的特点:(和GET方法类似)
一、没有请求主体。
二、会把查询条件格式化为URI的格式拼接到URL后面。
三、有大小限制,因为浏览器对url的长度有限制,所以造成了get请求有大小限制。chrome 8k IE 2K Firefox 7k。
四、明文发送,不安全,安全性比较差。
五、容易被浏览器缓存。
六、浏览器默认全是get请求。
七、成功返回状态码202。
HEAD方法的特点:(和GET方法类似)--秒杀 获取服务器时间 下载之前获取下载文件名和文件大小
一、没有请求主体。
二、会把查询条件格式化为URI的格式拼接到URL后面。
三、有大小限制,因为浏览器对url的长度有限制,所以造成了get请求有大小限制。chrome 8k IE 2K Firefox 7k。
四、明文发送,不安全,安全性比较差。
五、容易被浏览器缓存。
六、浏览器默认全是get请求。
七、没有响应主体。(只返回起始行和首部,不返回主体)
OPTIONS方法的特点:http://pan.baidu.com/disk/home#list/path=%2F Access-Control-Allow-Methods:HEAD, GET, OPTIONS, PUT, POST, DELETE
一、没有响应主体。
二、会把服务器支持哪些http方法放在相应首部中。
GET系方法和POST系方法
GET系:get、head、delete
POST系:post、put
为什么要设计这么多http方法?
各司其职
CRUD
/rest/1.0/userinfo
增加 post /rest/1.0/userinfo {name:'',sex:'',age:''}
删除 delete /rest/1.0/userinfo?id=1
修改 put /rest/1.0/userinfo?id=1 {name:'',sex:'',age:''}
查询 get /rest/1.0/userinfo?id=
这是软件设计架构,叫restful 表征状态转移
=============================================================
http状态码:
1xx http正在初始化,在http2.0中已经把1xx的状态码删掉。但是还有一个例外就是websocket 例如:https://developer.rongcloud.cn/signup一款聊天工具
101
2xx 客户端成功
200 OK 成功
202 accepted 接受
3xx 重定向 http://www.360buy.com/
301 永久转移
302 临时转移
301和302都有一个共同的特点:从站点A跳转到站点B
304 未修改(缓存)
4xx 客户端错误
400 错误的请求 端口不正确或者参数不正确
401 未认证 没有登录信息
403 禁止访问 没有权限
404 未找到 该资源未找到
5xx 服务器错误
500 内部服务器错误
503 连接数过多
ajax的同步和异步?
同步和异步统一根据send()执行的位置来实现分割逻辑
同步:
1、send()后统一不会被执行,直到http事务完成之后才会之后后续逻辑。
2、堵塞send()方法的逻辑。
异步:
1、send()后面照样执行。
2、不会堵塞send()方法的逻辑。
for(var n in location){console.log(n);}
通过域名拿到地址:
http://www.cnblogs.com/?1=1&b=2#hash
location.search
"?1=1&b=2"
location.hash
"#hash"
location.hostname
"fanyi.baidu.com"
location.protocol
"http:"