http常见基础知识点

引言:作为web开发人员,吃透http是很有必要的,下面是我对http协议的基本常用知识点总结。

http简介

简单来说,http(HyperText Transfer Protocol,超文本传输)协议就是用于客户端和服务器端之间的通信协议。 
用送信来类比,客户端就是写信人,服务器端是收信人,而http协议就是邮寄规则,他保障你写的信能被收到。 
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

http报文

客户端和服务器端通过相互发送报文进行通信,要深刻理解HTTP协议,就需要理解报文的格式和内容。

  • 请求报文 
    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:


看看下面的请求报文:

GET / HTTP/1.1 是请求行,请求方法为GET方法,HTTP版本为1.1 
下面的都是各种首部字段

Host: www.baidu.com        //请求资源的主机号和端口号Connection: keep-alive    //Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8                     //指定客户端接受哪些类型的信息Upgrade-Insecure-Requests: 1  //加载http资源时自动替换为https请求User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0        //客户端的操作系统及浏览器属性Accept-Encoding: gzip, deflate, sdch   //可接受的内容编码Accept-Language: zh-CN,zh;q=0.8     //指定返回的字符集,zh-cn表示中文Cookie: BAIDUID=9F4AEE71322A5BFB7F7E278EB5CB605C:FG=1; BIDUPSID=9F4AEE71322A5BFB7F7E278EB5CB605C; PSTM=1491725494; BDUSS=xyLTNIdmZFb0V1TktBcThOLXJsc0xSSVZjb01pM0hSV1dYU01BS2g3LTFlaEZa...  // 缓存信息

  • 响应报文

    当服务器接收到请求时,根据请求返回内容:

 HTTP/1.1 200 OK         //状态行,返回码是 200 OKServer: bfe/1.0.8.18    // 服务器用来处理请求的软件信息Date: Wed, 12 Apr 2017 07:21:34 GMT    //当前响应日期Content-Type: text/html;charset=utf-8     // 指明发送给接收者的实体正文的媒体类型Transfer-Encoding: chunked    //输出的内容长度不确定Connection: keep-alive     //持久连接Cache-Control: private      //使用的缓存机制,private代表对于单个用户的整个或部分响应消息Expires: Wed, 12 Apr 2017 07:21:33 GMT  // 表示超时时间Content-Encoding: gzip     //指采用的编码方式,这里采用gzip压缩X-UA-Compatible: IE=Edge,chrome=1   //用来解决浏览器兼容,IE使用最新的引擎渲染网页,chrome=1则可以激活Chrome FrameStrict-Transport-Security: max-age=172800  //提高通信安全性Set-Cookie: BDSVRTM=178; path=/      //设置缓存

当然这些只是一小部分首部字段,更多的可以在网上查询或者自己用控制台多找几个网页查看http响应。

http请求方法

下面介绍经常见到的发送http请求的方法:GETPOST

  • GET : GET方法用来请求访问URI所指定的资源,(我想访问你的某个资源)并不对服务器上的内容产生任何作用结果;
  • POST:POST方法用来传输实体主体,目的并不是获取响应的主体内容,(我要把这条信息告诉你),POST方式则是把内容放在报文内容中,因此只要报文的内容没有限制,它的大小就没有限制。
  • GET与POST的区别
    • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
    • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
    • GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
    • GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

简单来说GET 用于获取某个内容,POST 用于提交某种数据请求。 
按照使用场景来说,一般用户注册的内容属于私密的,这应该使用POST方式;而针对某一内容的查询,为了快速的响应,可以使用GET方式。

http状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息–表示请求已接收,继续处理

2xx:成功–表示请求已被成功接收、理解、接受

3xx:重定向–要完成请求必须进行更进一步的操作

4xx:客户端错误–请求有语法错误或请求无法实现

5xx:服务器端错误–服务器未能实现合法的请求

常见状态码:

200 OK                        //客户端请求成功400 Bad Request               //客户端请求有语法错误,不能被服务器所理解401 Unauthorized              //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden                 //服务器收到请求,但是拒绝提供服务404 Not Found                 //请求资源不存在,eg:输入了错误的URL500 Internal Server Error     //服务器发生不可预期的错误503 Server Unavailable        //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

以上只是基础知识点,参考链接:http://www.jianshu.com/p/81632fea327c
http://www.cnblogs.com/ranyonsue/p/5984001.html,另外推荐《图解http》这本书,相比于《http权威指南》更容易理解

>**引言**:作为web开发人员,吃透http是很有必要的,下面是我对http协议的基本常用知识点总结。##http简介 简单来说,http(HyperText Transfer Protocol,超文本传输)协议就是用于客户端和服务器端之间的通信协议。用送信来类比,客户端就是写信人,服务器端是收信人,而http协议就是邮寄规则,他保障你写的信能被收到。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。![Alt text](./1491979745382.png)##http报文客户端和服务器端通过相互发送报文进行通信,要深刻理解HTTP协议,就需要理解报文的格式和内容。- **请求报文** 客户端发送一个HTTP请求到服务器的请求消息包括以下格式:![Alt text](./1491980113710.png)看看下面的请求报文:![Alt text](./1491982850380.png)`GET / HTTP/1.1` 是请求行,请求方法为GET方法,HTTP版本为1.1**下面的都是各种首部字段**:``` httpHost: www.baidu.com //请求资源的主机号和端口号Connection: keep-alive //Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 //指定客户端接受哪些类型的信息Upgrade-Insecure-Requests: 1 //加载http资源时自动替换为https请求User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0 //客户端的操作系统及浏览器属性Accept-Encoding: gzip, deflate, sdch //可接受的内容编码Accept-Language: zh-CN,zh;q=0.8 //指定返回的字符集,zh-cn表示中文Cookie: BAIDUID=9F4AEE71322A5BFB7F7E278EB5CB605C:FG=1; BIDUPSID=9F4AEE71322A5BFB7F7E278EB5CB605C; PSTM=1491725494; BDUSS=xyLTNIdmZFb0V1TktBcThOLXJsc0xSSVZjb01pM0hSV1dYU01BS2g3LTFlaEZa... // 缓存信息```- **响应报文** 当服务器接收到请求时,根据请求返回内容: ![Alt text](./1491982801746.png)``` http HTTP/1.1 200 OK //状态行,返回码是 200 OKServer: bfe/1.0.8.18 // 服务器用来处理请求的软件信息Date: Wed, 12 Apr 2017 07:21:34 GMT //当前响应日期Content-Type: text/html;charset=utf-8 // 指明发送给接收者的实体正文的媒体类型Transfer-Encoding: chunked //输出的内容长度不确定Connection: keep-alive //持久连接Cache-Control: private //使用的缓存机制,private代表对于单个用户的整个或部分响应消息Expires: Wed, 12 Apr 2017 07:21:33 GMT // 表示超时时间Content-Encoding: gzip //指采用的编码方式,这里采用gzip压缩X-UA-Compatible: IE=Edge,chrome=1 //用来解决浏览器兼容,IE使用最新的引擎渲染网页,chrome=1则可以激活Chrome FrameStrict-Transport-Security: max-age=172800 //提高通信安全性Set-Cookie: BDSVRTM=178; path=/ //设置缓存```*当然这些只是一小部分首部字段,更多的可以在网上查询或者自己用控制台多找几个网页查看http响应。*##http请求方法下面介绍经常见到的发送http请求的方法:**GET**和**POST**:- **GET** : GET方法用来请求访问URI所指定的资源,*(我想访问你的某个资源)*并不对服务器上的内容产生任何作用结果;<br>- **POST**:POST方法用来传输实体主体,目的并不是获取响应的主体内容,*(我要把这条信息告诉你)*,POST方式则是把内容放在报文内容中,因此只要报文的内容没有限制,它的大小就没有限制。<br>- **GET与POST的区别**: - GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中. - GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制. - GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。 - GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码. `简单来说`, **GET** 用于获取某个内容,**POST** 用于提交某种数据请求。按照使用场景来说,一般用户注册的内容属于私密的,这应该使用POST方式;而针对某一内容的查询,为了快速的响应,可以使用GET方式。##http状态码状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:1xx:指示信息--表示请求已接收,继续处理2xx:成功--表示请求已被成功接收、理解、接受3xx:重定向--要完成请求必须进行更进一步的操作4xx:客户端错误--请求有语法错误或请求无法实现5xx:服务器端错误--服务器未能实现合法的请求常见状态码:``` http200 OK //客户端请求成功400 Bad Request //客户端请求有语法错误,不能被服务器所理解401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务404 Not Found //请求资源不存在,eg:输入了错误的URL500 Internal Server Error //服务器发生不可预期的错误503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常```> 以上只是基础知识点,参考链接:http://www.jianshu.com/p/81632fea327c http://www.cnblogs.com/ranyonsue/p/5984001.html ,另外推荐《图解http》这本书,相比于《http权威指南》更容易理解。

时间: 2024-11-07 23:27:43

http常见基础知识点的相关文章

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF

HTML5基础知识点

今天了解html,下面是我分享的有关html的基础知识点: ①什么是html? html是一种超文本标记语言(超文本标记标签) ②html标签是html中的最基本单位 也是最重要的部分,html标签分为单标签和双标签. 单标签</>   双标签<></> html中的一些常见标签 1,<br/>换行标签    2,<hr/>水平分割线标签   3,<p></p>段落标签     4,<pre></pre&

C# .Net基础知识点解答

C# .Net基础知识点解答 1. 什么是.NET?什么是CLI?什么是CLR?IL是什么?JIT是什么,它是如何工作的?GC是什么,简述一下GC的工作方式? 通俗的讲,.Net是微软开发应用程序的一个平台: CLI是Common Language Infrastructure,是公共语言架构: CLR是Common Language Runtime,即公共语言运行时: IL是.Net编译器产生的中间代码,称为通用中间语言CIL(Common Intermediate Language),CIL

JavaScript 开发者经常忽略或误用的七个基础知识点

英文原文:7 JavaScript Basics Many Developers Aren't Using (Properly) JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新手开发者被各种强大的 JavaScript 框架吸引进来,但他们却忽略了框架身后浩如星海的 JavaScript 实用技巧.本文将为你呈献其中7个基础知识点. 1. 在

JAVA基础知识点总结(全集)

1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境,JRE:java运行环境 1.4第一个java程序:HelloWorld,java的入口是main(public static void main(String[] args)) 1.5java程序的开发步骤:.java编译(javac)成.class运行(java).class文件 2.基本数据

JavaScript 经常忽略的 7 个基础知识点

1. 在 String.prototype.replace 方法中使用 /g 和 /i标志位 令很多 JavaScript 初学者意外的是,字符串的 replace 方法并不会 替换所有匹配的子串——而仅仅替换第一次匹配.当然 JavaScript 老手们都知道这里可以使用正则表达式,并且需要加上一个全局标志位(/g): Javascript代码 // Mistake // 踩到坑了 var str = "David is an Arsenal fan, which means David is

js基础知识点收集

js基础知识点收集 js常用基本类型 function show(x) { console.log(typeof(x)); // undefined console.log(typeof(10)); // number console.log(typeof('abc')); // string console.log(typeof(true)); // boolean console.log(typeof([])); // object console.log(typeof(function (

js基础知识点总结

js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避免全局变量和方法(命名空间,闭包,面向对象),模块化(seaJs,requireJs) 常用内部类:Data Array Math String HTML属性,CSS属性HTML:属性.HTML属性="值":CSS:对象.style.CSS属性="值"; class和f

JavaScript语言基础知识点图示

原文:JavaScript语言基础知识点图示 一位牛人归纳的JavaScript 语言基础知识点图示. 1.JavaScript 数据类型 2.JavaScript 变量 3.Javascript 运算符 4.JavaScript 数组 5.JavaScript 流程控制 6.JavaScript 函数基础 7.DOM 基本操作 8.Window 对象 9.JavaScript 字符串函数 10.正则表达式 JavaScript语言基础知识点图示,布布扣,bubuko.com