ttp流程的重点解析:图解http,content-type,跨域;
##http
浏览器输入url到整个页面显示出来经历的过程
输入的时候判断(回车前)
判断是域名,还是搜索条件(回车后)
url = 协议+域名/ip+port
协议:http,https,ftp…
HTTP 请求的发送
HTTP协议是无状态的和Connection: keep-alive的区别
无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。
HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
DNS查询
用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
ROOT DNS将域名授权dns记录回应给 LocalDns
LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
域名授权dns 查询域名记录后,回应给 LocalDns
LocalDns 将得到的域名ip地址,回应给 用户端
用户得到域名ip地址后,访问站点服务器
站点服务器应答请求,将内容返回给客户端.
数据请求历程
tcp/ip 四层结构
应用层 对正在运行的程序提供服务,不同服务引入不同的网络协议(http,ftp,smtp…)
运输层 tcp: 把应用层受到的数据分割,并在哥哥豹纹上标记序号以及端口号传给下网际层
或者,将收到的豹纹重组传给应用层 udp:是一个不可靠的、无连接协议;
网际层 它的功能是把分组发往目标网络或主机。
同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。
4 链路层 硬件部分,
http code
301 跳转
302 临时重定向
304 读取缓存
415 不支持媒体类型
503 系统繁忙
505 HTTP 版本不受支持
后台处理流程
负载均衡:
> F5
> LVS
> 反向代理
Web Server 中的处理 :apache,
返回数据
浏览器处理
CDN加速
跨域
降域
domain修改
JSONP
原理:
当我们通过script标签请求时
后台就会根据相应的参数(json,handleResponse)
来生成相应的json数据(handleResponse({“data”: “zhe”}))
script.src = ‘http://www.baidu.com/json/?callback=handleResponse‘;
cors
原理依赖后端不阻止外域请求
Header set Access-Control-Allow-Origin
postMessage
window.name
原理:
name 在浏览器环境中是一个全局/window对象的属性,且当在 frame 中加载新页面时,name 的属性值依旧保持不变。
通过在 iframe 中加载一个资源,该目标页面将设置 frame 的 name 属性。此 name 属性值可被获取到,以访问 Web 服务发送的信息。
但 name 属性仅对相同域名的 frame 可访问。这意味着为了访问 name 属性,当远程 Web 服务页面被加载后,必须导航 frame 回到原始域。
同源策略依旧防止其他 frame 访问 name 属性。一旦 name 属性获得,销毁 frame 。