Http - Web世界的幕后神兵
2017-12-26 20:11
211 查看
在之前的工作中,一次项目就是使用H5+Ajax打包制作了一个App,其实对之前的知识点和实践都属于那种模糊的概念,所以梳理了,吐槽大会里说,这是一个知识点,En。
http协议是Tcp/Ip族的一员,我是这样理解的http方便了资源的访问和,连接着彼此,如上图,不管我用手机、笔记本、PC机的访问媒介,还是我在家,在公司,在任何一个地方都能很便利的访问到云上的资源,下图更好理解些。
数据的传输就是从发送端传输到接受端的交互过程,http存在于TCP/IP模型中的应用层,经过层层认证,成对出现,有点像对称加密一样,在看不见摸不着的世界里创造出来这些,人类真的是智慧无比的,此处可以有掌声。
下面是我架构Mr.Y1.0的架构思想,用Cms是输入端输入数据,然后以接口的以json的形式传递和处理,以协议的方式去定义,进行统一的管理,防止代码中的错乱,整体思想是一个应用只做一件事儿,之后会用Python去自动抓取数据,让新闻自动抓取,自动更新和发布,打造成智能新闻系统。(暂时没有什么好的想法,暂时只想到这么多)
我的做法是使用的是Mui前端框架,是Js封装了原生的调用,很了不起的(想法),比ecMobile方便了许多,可以随便玩耍玩耍,实践才能成长。Mui的部分我就不做阐述了,文档写的超级清楚,这得你自己去实践起来,想的多做的少是不可取的。http://dev.dcloud.net.cn/mui/ui/(mui文档地址)
HTTP协议工作步骤:
1)客户机与服务器需要建立连接。单击某个超链接,HTTP协议的工作开始。
2)建立连接后,客户机发送一个请求给服务器。格式为:前边是统一资源标识符(URL)、中间是协议版本号,后边是MIME信息(包括请求修饰符、客户机信息和可能的内容)。
3)服务器接到请求后,给予相应的响应信息。格式为:首先是一个状态行(包括信息的协议版本号、一个成功或错误的代码),然后是MIME信息(包括服务器信息、实体信息和可能的内容)。
4)客户端接收服务器返回的信息并显示在用户的显示屏上,然后客户机与服务器断开连接。
直观上图,Http通用头域,请求消息,响应消息,下面介绍几个重要的参数:
技术有圈,分享无界,每天多进步一点,谢谢你的光临~
http协议是Tcp/Ip族的一员,我是这样理解的http方便了资源的访问和,连接着彼此,如上图,不管我用手机、笔记本、PC机的访问媒介,还是我在家,在公司,在任何一个地方都能很便利的访问到云上的资源,下图更好理解些。
数据的传输就是从发送端传输到接受端的交互过程,http存在于TCP/IP模型中的应用层,经过层层认证,成对出现,有点像对称加密一样,在看不见摸不着的世界里创造出来这些,人类真的是智慧无比的,此处可以有掌声。
下面是我架构Mr.Y1.0的架构思想,用Cms是输入端输入数据,然后以接口的以json的形式传递和处理,以协议的方式去定义,进行统一的管理,防止代码中的错乱,整体思想是一个应用只做一件事儿,之后会用Python去自动抓取数据,让新闻自动抓取,自动更新和发布,打造成智能新闻系统。(暂时没有什么好的想法,暂时只想到这么多)
我的做法是使用的是Mui前端框架,是Js封装了原生的调用,很了不起的(想法),比ecMobile方便了许多,可以随便玩耍玩耍,实践才能成长。Mui的部分我就不做阐述了,文档写的超级清楚,这得你自己去实践起来,想的多做的少是不可取的。http://dev.dcloud.net.cn/mui/ui/(mui文档地址)
HTTP协议工作步骤:
1)客户机与服务器需要建立连接。单击某个超链接,HTTP协议的工作开始。
2)建立连接后,客户机发送一个请求给服务器。格式为:前边是统一资源标识符(URL)、中间是协议版本号,后边是MIME信息(包括请求修饰符、客户机信息和可能的内容)。
3)服务器接到请求后,给予相应的响应信息。格式为:首先是一个状态行(包括信息的协议版本号、一个成功或错误的代码),然后是MIME信息(包括服务器信息、实体信息和可能的内容)。
4)客户端接收服务器返回的信息并显示在用户的显示屏上,然后客户机与服务器断开连接。
直观上图,Http通用头域,请求消息,响应消息,下面介绍几个重要的参数:
// 指定允许其他域名访问 header('Access-Control-Allow-Origin:*'); // 响应类型 header('Access-Control-Allow-Methods:GET'); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type'); //设置长连接 header("Connection:Keep-Alive"); header("Proxy-Connection:Keep-Alive"); //Host 请求的域名 //User-Agent //HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别 //Accept //指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序。 //Accept-Encoding //指定客户端浏览器可以支持的web服务器返回内容压缩编码类型 //Content-Type //显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性 //Connection //表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1 //cookie //包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
$httpinfo = get_headers('http://www.baidu.com', 1); print_r($httpinfo); Array ( [0] => HTTP/1.1 200 OK [Date] => Sat, 24 Oct 2015 05:20:47 GMT [Content-Type] => text/html [Content-Length] => 14613 [Last-Modified] => Tue, 02 Sep 2014 08:55:13 GMT [Connection] => Close [Vary] => Accept-Encoding [Set-Cookie] => Array ( [0] => BAIDUID=57422D9DF880F51C9236D0AAC5AB11BA:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com [1] => BIDUPSID=57422D9DF880F51C9236D0AAC5AB11BA; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com [2] => PSTM=1445664047; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com [3] => BDSVRTM=0; path=/ ) [P3P] => CP=" OTI DSP COR IVA OUR IND COM " [Server] => BWS/1.1 [X-UA-Compatible] => IE=Edge,chrome=1 [Pragma] => no-cache [Cache-control] => no-cache [BDPAGETYPE] => 1 [BDQID] => 0xe5d2f28c001a4c17 [BDUSERID] => 0 [Accept-Ranges] => bytes ) $fp = fopen('http://www.baidu.com/', 'r'); print_r(stream_get_meta_data($fp)); fclose($fp); Array ( [wrapper_data] => Array ( [0] => HTTP/1.1 200 OK [1] => Date: Sat, 24 Oct 2015 05:45:19 GMT [2] => Content-Type: text/html [3] => Content-Length: 14613 [4] => Last-Modified: Tue, 02 Sep 2014 08:55:13 GMT [5] => Connection: Close [6] => Vary: Accept-Encoding [7] => Set-Cookie: BAIDUID=3D2EF009AB73DEF6A808146A1CB6BEF5:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com [8] => Set-Cookie: BIDUPSID=3D2EF009AB73DEF6A808146A1CB6BEF5; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com [9] => Set-Cookie: PSTM=1445665519; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com [10] => Set-Cookie: BDSVRTM=0; path=/ [11] => P3P: CP=" OTI DSP COR IVA OUR IND COM " [12] => Server: BWS/1.1 [13] => X-UA-Compatible: IE=Edge,chrome=1 [14] => Pragma: no-cache [15] => Cache-control: no-cache [16] => BDPAGETYPE: 1 [17] => BDQID: 0xb0560df000168912 [18] => BDUSERID: 0 [19] => Accept-Ranges: bytes ) [wrapper_type] => http [stream_type] => tcp_socket [mode] => r [unread_bytes] => 0 [seekable] => [uri] => http://www.baidu.com/ [timed_out] => [blocked] => 1 [eof] => ) $html = file_get_contents('http://www.baidu.com/'); print_r($http_response_header); $data = array( 'dopost' => 'send', 'comtype' => 'comments', 'aid' => 1083, 'fid' => 0, 'msg' => '轻轻的我来了', 'username' => 'car', 'notuser' => '', 'face' => 6, 'feedbacktype' => 'feedback', 'pwd' => '', 'validate' => '', ); $data = http_build_query($data); curl和socket在这里就不多说了
技术有圈,分享无界,每天多进步一点,谢谢你的光临~
相关文章推荐
- 浏览器的工作原理:新式网络浏览器幕后揭秘(http://www.kuqin.com/web/20121209/333935.html)
- 走进http的世界------用C代码模拟浏览器IE(http client)访问web(http server)的行为
- Web前端教程-01.走进前端工程师的世界
- 使用http-server搭建web服务器
- 一个httpwebrequest异步下载的例子
- 使用Filter统计Java(J2EE)的web程序http请求响应时间
- 终止 WebClient 和HttpWebRequest
- 三种web性能压力测试工具http_load webbench ab小结
- Cordova WebView http下载监听整理
- HttpWebRequest 上传文件
- 图解HTTP第七章:确保Web安全的HTTPS
- HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法
- C#使用HttpWebRequest和HttpWebResponse上传文件示例
- [C#]HttpWebRequest、HttpWebRespoonse、WebRequest and WebResponse、WebClient差异
- JavaWebdHttp协议之表头
- 将WebBrowser的cookie信息传给HttpWebRequest.
- HttpWebRequest 跳转后(301,302)ResponseUri乱码问题
- .NET Compact Framework下HttpWebRequest开发
- 使用Golang 搭建http web服务器
- C#获取网页内容 (WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)