HTTP系列之HTTP初体验

来源:互联网 发布:淘宝刷访问量 编辑:程序博客网 时间:2024/06/05 20:43

*最近在项目里脱不开身,天天愁人,也就没写博客了。
正好周末了,给自己放个假,写写博客,轻松一下,嘻嘻。最近准备把网络HTTP协议系列大概讲一下,细节不会讲,只是把大家平常对于HTTP协议的一些乌云给拨开。*

HTTP协议由来(个人对HTTP的基本理解)
http(HyperText Transfer Protocol)是一种网络协议,所有的www文件必须遵循这一标准,设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。简单来说就是一帮牛人设置好了发送暗号和接收暗号(协议),我们只好遵守了,不遵守过不去啊。
至于我们平常一些基本的应用并没有接触到,所以可能我们会说我到底怎么遵守的呢,其实就说web应用(www应用)来说吧,浏览器为了省却我们的时间和经历,其实已经给我们的web页面封转好了这些协议,我们只需要关心我们的页面展示和服务器端代码就可以了,不用关心传输的问题,这下理解了吧。
但是设计到一些复杂的加密、效率以及安全等问题时,就需要关心关心HTTP协议里的真正内容了,其实HTTP就是封装在HEADERS中的参数,以前的大牛只是规定了必须传输的参数,我们为了自己的应用也可以定义一些暗号来进行联系,这就需要我们在前端和后端服务器自己来设置暗号了,如:header.set(“Authorization”);header.get(“Authorization”);

当然我们还是先得把人家协议里的基本的参数了解清楚,也有助于我们自己定暗号。
之前开发web应用时也不是太关注这块儿,只是关注一下response响应是否成功返回之类的,没有具体了解里面参数的意义,正好前两天用到了。网上这种例子一大堆,我上面列了几个详细点的,自己写个程序玩玩就明白了。
网上这种例子一大堆,我上面列了几个详细点的,自己写个程序玩玩就明白了。

项目需要:添加接口验证
本来很简单的,只是在头Header中加入一个Authorization的验证,但是正好涉及到跨域的问题,搞得也是够复杂的了,所以就特别查了一圈,才发现自己孤陋寡闻了,以前还真对HTTP不了解。下篇我会讲讲跨域(可怜以前只知道jsonp,太不方便了)

问题1
为什么不在参数中添加而要在header中添加AUTH?
其实刚开始想的是为什么不在参数中添加一个参数,然后后台写个过滤器就可以了呀!
其实有这么几点原因:
1.大家约定俗成的,认证信息和传输信息是两码事,从规范而言,也应该放到header中,业务数据分离;
2.从服务器端先从header端拿,然后才是拿数据,保证一定的安全。
(其实现在这种用的并不多,因为并不是很安全,只是一个base64的编码,要是用上第三方的一个管理,生成固定权限和实效的token就安全多了)。
3,从代码方面也方便,不用再在每个url后面添加这个参数,由header进行管理。
上面这些应该是他们当时的考虑,后来浏览器(web应用)就做出了一套关于Authorization的规范,如下:
一次典型的访问场景是:
浏览器发送http请求(没有Authorization header)
服务器端返回401页面
浏览器弹出认证对话框
用户输入帐号密码,并点确认
浏览器再次发出http请求(带着Authorization header)
服务器端认证通过,并返回页面
浏览器显示页面
这种流程。
问题2
http协议里面的标准属性有什么,为什么可以自定义属性?标准属性和自定义的属性有什么不同呢?
应该是http协议中某些属性是必须的,因为是http协议规范的,没有这些属性就不能够正常的传输数据;
当时设计http协议时为了能够适应不同的应用,就允许自定义添加属性来满足自己的要求,就比如www应用就添加了cookie等属性;(虽然这样违背了http的无状态性原则)

参考:
http://www.cnblogs.com/yuzhongwusan/archive/2011/10/20/2218954.html
http://www.studyofnet.com/news/166.html
http://www.cnblogs.com/Joans/p/3956490.html
http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html
http://www.cnblogs.com/cxd4321/p/3504632.html

原创粉丝点击