HTTP文件协议介绍
2015-12-13 21:25
567 查看
HTTP文件协议介绍
写在前面:本文只是http文件协议的介绍,不是http协议介绍,故不包括dns解析等其他内容,旨在从应用层面介绍http文件。1.HTTP简介
1.1 HTTP协议的简介与作用
http协议是建立在tcp协议80(默认)端口上的一个通讯协议,有了这个通讯协议,在两台机器中就可以通过URL接收与发送内容。程序员们站在http层上进行开发,不必关心该层以下的内容,甚至无需了解tcp协议,这也是计算机中“抽象”思想的体现。web界就是在http协议的基础上诞生的,当然现在也有很多其应用在使用http协议,例如移动端app、嵌入式智能硬件等。
图1-1 HTTP协议在TCP/IP四层结构中的位置
1.2 web工作流程
我们在浏览器访问一个站点,在输入URL以后,浏览器与服务器的工作流程是这样的,如图1-2。图1-2 web请求与响应过程
浏览器向URL所指的服务器发送了一个http request文件,服务器接收到这个文件后,返回一个http response文件。浏览器从response文件解析出html文件,并显示在屏幕上。(获取css、js等静态文件也是这个流程,同样放在http response文件中。)
2.HTTP文件介绍
2.1 HTTP文件分类
HTTP文件分为两种,request文件和response文件,request文件又分为GET、POST、HEAD等多种,在web领域最常用的就是GET和POST。图2-1 http文件分类
2.2 request 文件
request文件一般用来客户端向服务器发请求,由head和body(可选)组成。GET文件:
只有head,没有body,每个Header一行一个,换行符是\r\n,格式如下:
GET /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3
实例:访问www.baidu.com的request文件就是GET。
GET / HTTP/1.1 Host: www.baidu.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36 Accept-Encoding: gzip, deflate, sdch Accept-Language: zh-CN,zh;q=0.8,en;q=0.6 Cookie: ********
POST文件
每个Header一行一个,换行符是\r\n,当遇到连续两个\r\n时,Header部分结束,后面的数据全部是Body,格式如下:
POST /path HTTP/1.1 Header1: Value1 Header2: Value2 Header3: Value3 body data goes here...
POST 文件实例,以提交form表单为例。该表单的html代码如下,name输入liuweijie,password输入123456;
<form action="/userData" method="post"> name:<input type = "text" name = "name"><br/> password:<input type = "password" name = "password"><br> <input type = "submit" name="submit"> </form>
提交出去的POST文件如下:
POST /userData HTTP/1.1 Host: localhost:63342 Connection: keep-alive Content-Length: 56 Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Origin: http://localhost:63342 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36 Content-Type: application/x-www-form-urlencoded Referer: http://localhost:63342/htmlLearning/index.html Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.8,en;q=0.6 Cookie: ******* name=liuweijie&password=123456&submit=%E6%8F%90%E4%BA%A4
可以看到POST文件把form的参数放到了body处,例子中是以明文的形式,这样很不安全,一般body中的内容我们都要进行加密。
GET与POST的区别
引用百度知道里的一个回答,从应用角度上来讲,我觉得回答的非常好。至于本质的区别,没有必要去深究,当然如果有兴趣,可以看这篇文章GET和POST的真正区别
图2-2 GET与POST的区别
GET主要用来发送请求,POST用来提交数据。当然GET也可以通过URL传参的方法提交少量数据。
2.3 response文件
response文件一般用来客服务器向客户端回复信息,由head和body组成。一个response文件的格式如下:
HTTP/1.1 Status-Code Reason-Phrase Header1: Value1 Header2: Value2 Header3: Value3 body data goes here...
Status-Code是状态吗,200表示正常,404表示没有找到页面。 Reason-Phrase是状态的语言描述。例如200 OK就表示一切正常且成功。状态码有很多种,这里不一一列举,可自行百度谷歌。
下面response文件实例,是上文中请求www.baidu.com发出的request的回应。
HTTP/1.1 200 OK Server: bfe/1.0.8.5 Date: Sat, 01 Aug 2015 13:59:05 GMT Content-Type: text/html;charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Cache-Control: private Expires: Sat, 01 Aug 2015 13:59:05 GMT Content-Encoding: gzip X-UA-Compatible: IE=Edge,chrome=1 BDPAGETYPE: 2 BDQID: 0x990999ea000175ad BDUSERID: 1073794219 Set-Cookie: **** Set-Cookie: **** Set-Cookie: **** Set-Cookie: **** body including html is too long to paste here,
参考文章
相关文章推荐
- 黑马程序员之网络编程
- vmware中的3种网络模式:桥接、NAT(地址转换)、host-only
- nova http 409 虚拟机状态重置
- TCP/IP详解卷1 读书笔记:第二十八章 SMTP和POP3协议
- tomcat配置https
- HttpUrlConnection
- 利用Socket建立网络连接的步骤
- NFS网络文件系统的应用
- 什么是TCP连接的三次握手
- HttpServletRequest和HttpServletResponse
- HttpServlet cannot be resolved to a type
- TCP/IP详解卷1 读书笔记:第二十七章 FTP协议
- TCP/IP网络协议
- Android--Apache HttpClient
- Android--HTTP协议
- Firefox 的页面缩放选项在这里 - Http Tool 插件查看自动格式化后的 json
- TCP及socket通信原理
- 参加南京未来网络SDN大会的整理
- nodejs 5.2.0文档自翻译——HTTP模块
- Apache 的 httpd.conf 详解