赞
踩
本帖最后由 michael3636 于 2015-5-1 18:05 编辑
PART 1正名: "POST" 这个叫法是很不科学的,必须正名,它真的真名是:XHR(Xml Http Requset)
垫底的知识点:
浏览器是如何工作的(按键论坛为例)当我们打开浏览器,在里面的输入网址(http://bbs.anjian.com),然后按下回车之后:
浏览器连接DNS服务器:把按键的域名域名解析为IP地址(117.27.152.245:80),域名是为了让我们人类好记和容易理解而存在的.真正http通讯,它所需要的永远是IP地址.
当浏览器得到IP地址以后:连接这个按键论坛的IP
连接成功后:向地址服务器发送消息,消息永远分2个部分浏览器自己发给服务的消息:比如:我是啥浏览器,我的工作系统是什么系统,我能处理什么格式的文件,我比较偏向简体中文的网页语言,我从什么网址来到你这个服务器的等等...我们使用者向服务器提交的请求:比如我要去的地方是按键的综合讨论板块 等等 4.按键服务器接受到我们的请求以后开始工作了:
首先.给浏览器发个应答信息,意思是告诉浏览器,你的信息我收到了.我打算干啥.这个信息是用数字表达的..不同的数字代码不同的含义比如:200(代表我收到了,下面我将开始发给你你所请求的内容)301(我收到了,你去我给你的网址服务器拿吧,下面我把网址发给你)304(我收到了,你从缓存去拿网页吧..我就不发了)400(我收到了..但是你发的是啥啊我看不懂)404(我收到了,但是你请求的东西不存在啊)等等
如果服务器返回的数字是200,这个工作才存在,服务器给浏览器发送数据,数据也包括2个内容,发给浏览器本身的和发给我们的,发给浏览器的有:我是啥服务器,我发给你的时间是什么时间(服务器的时间哦,,大家想到点啥?),我发给你的内容是用什么方式压缩的,我发给你的内容一共多长,我发给你的网页是用什么字符编码的,等等等 顺便提一下:cookie也是在这发的......第2部分:发给我们的网页的内容 5.浏览器开始接受服务器发来的内容,根据服务器发给浏览器本身的东西,开始工作,哦..你用gzip压缩过啊..我就用gzip方式解 压, 哦,你用gbk编码的啊..我得用gbk解码,哦你发的cookie啊..我该存的存,该改的改,,该删的删...哦,这是你的网页源文件啊..我收收收..
6.数据接收完成后,浏览器开始处理数据了,网页里的代码该执行的执行,网页里的图片和文件该下载的下载(这类资源文件是不包含在网页里的,网页里只有一个链接,浏览器得灯具链接去下载才能得到),根据网页里的css内容,基于网页元素进行排版,最终生成网页,显示在我们眼前
7.响应用户的各种操作,根据用户的操作做出相应的行为,或者是提交表单.或者去是一个链接,或者是运行一段js代码等等
以上,就是浏览器的工作流程,当我们在浏览器里点击链接或者输入地址的后,,它就和服务器重复的进行如上的工作,从而让我们看到并操作网页
一些补充的知识点:
一张网页远远不止是一次http请求所得,是很多次请求的综合体:我们看到的图片/听到的声音/很多js代码/很多css规则/他们都是以文件形式存在的,浏览器得根据网页得内容去分别下载网页是带有代码的,浏览器是会执行代码的,编写这个代码的语言是javascript,也是种脚本语言,IE内核的浏览器支持2种脚本语言:javascript和vbs(IE12以前是这样的,,,据传IE12也开始不支持vbs了) 其他内核浏览器只支持javascript,真因为如此,所以现在的网页都只带一种代码,javascript,简称js
同一个网址为啥他显示的是中文版的,我显示的是英文版的?答案在上面的3,浏览器向服务器发的语言偏好不一样导致的(前提是服务器得有同一个网页请求得不同语言版本!!!)
看到的网页和源文件对不上? 因为网页里的js代码带有改变网页的内容,浏览器执行了这些代码..网页内容被js改过了,所以不一样了.
Cookie是啥: 所有http服务器有个特点,他们没有记忆力,当你打开一个网页,马上再去打开的时候,他们压根是不知道你几秒前曾经来过,为了让服务器克服这个毛病..cookie就诞生了,,,他们由服务器发过来并被浏览器保存,浏览器每次请求都会带着保存目标服务器的曾经给过它的cookie...服务器不认识你,,但是它认识cookie..它通过cookie间接的认识..并且也根据cookie的内容知道你曾经在它那干了点啥.......比如:你登陆过..登陆名是什么..你上次浏览网站是什么时候,,,你浏览过哪些页面..等等等等...这些信息都直接或者间接的来自cookie...
Catche是啥:Catche就是缓存,是为了节省带宽和提高网页显示速度而存在的,它是网页的拷贝副本.除了你的浏览器设置,服务器也会告诉浏览器启不启用缓存功能...当他返回304的时候..浏览器就从缓存读网页了..同时,网站也不会发给你网页了..这就节省了服务器的带宽了..同时,浏览器从硬盘读网页速度当然远远快于服务器传给你网页..你的显示也就快了....上网体验也就好了 好了,让我们整理下浏览器的功能吧:
浏览器功能=通过http协议取得网页源文件,并且根据服务器的要求处理数据(cookie和Catche) +下载源文件里指定的各种资源文件+执行js脚本代码+根据css规则进行网页排版并最终显示再进一步:浏览器功能=XHR +下载源文件里指定的各种资源文件+执行js脚本代码+根据css规则进行网页排版并最终显示
所以XHR的功能大家也明白了XHR:通过http协议取得网页源文件,并且根据服务器的要求处理数据(cookie和Catche)的这么个玩样.也就是实现了上面浏览器功能的1--5的步骤个人补充:其实这么定义是根本不全面和完整的.我完全是基于我们在按键里使用它的功能来定义的.在按键里..我们也就是用到了HR(Http Reauqest)功能.X(Xml,一种文档格式,在网页应用上有举足轻重的地位)压根用不上,大家将就着看吧....那为何叫XHR而不是叫HR呢....全世界都这么叫嘛..我总不成为了按键改成HR吧....
啰嗦完了,我尽量用了最最普通的文字去解解释所有涉及的知识概念,可能不是很精确.大家谅解吧..毕竟我的期望是所有人都能看懂!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。