Http请求与Http响应详解

原创 2016年08月29日 09:41:33

Http协议是超文本传输协议,用于在互联网请求资源。

一、Http请求

Http请求有三个部分组成,分别是请求方法/版本、请求头信息、请求正文信息。

1、请求方法Url/版本

现有Http协议支持7种请求方法GET\POST\HEAD\OPTIONS\PUT\DELETE\TARCE
  • GET      请求获取由Request-URI所标识的资源。
  • POST Request-URI所标识的资源后附加新的数据。
  • HEAD 请求获取由Request-URI所标识的资源的响应消息报头。
  • OPTIONS 请求查询服务器的性能,或查询与资源相关的选项和需求。
  • PUT 请求服务器存储一个资源,并用Request-URI作为其标识。
  • DELETE 请求服务器删除由Request-URI所标识的资源。
  • TRACE 请求服务器回送收到的请求信息,主要用语测试或诊断。

2、请求头信息(Request Header)

  • Location:响应报头域用于重定向接受者到一个新的位置。
  • Server: 响应报头域包含了服务器用来处理请求的软件信息。
  • Content-Encoding:实体报头域被使用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容编码,因而要获得Content- Type报头域中所引用的媒体类型,必须采用相应的解码机制。
  • Content-Language:实体报头域描述了资源所用的自然语言。Content-Language允许用户遵照自身的首选语言来识别和区分实体。
  • Content-Length:实体报头域用于指明正文的长度,以字节方式存储的十进制数字来表示,也就是一个数字字符占一个字节,用其对应的ASCII码存储传输。
  • Content-Type:实体报头域用语指明发送给接收者的实体正文的媒体类型。例如:
  • Content-Type: text/html;charset=ISO-8859-1
  • Set-Cookie:设置Cookie,记录状态用于下次访问。
  • Accept-Language: zh-cn,zh;q=0.5  (浏览器支持的语言类型)
  • Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7(浏览器支持的字符编码)
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8(浏览器支持的MIME类型)
  • Accept-Encoding: gzip, deflate(浏览器支持的压缩编码)
  • User-Agent: Mozilla/5.0 (使用的用户代理)
  • Host: 域名
  • Connection: Keep-Alive
  • Content-type:内容的MIME类型,如果要请求json数据则可以设置application/json

3、请求正文信息

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
username=jinqiao&password=1234

以下是用chorme做的一个http请求的截图

由图可以看出,第一行是请求头信息,其中请求方法、请求url、请求协议分别被空格隔开,剩下的为请求头信息,包括了编码,主机、Cookie等信息。而请求正文信息,因为这个是Get请求,其请求参数直接接在Url后面。若为Post请求,那么在头信息结束之后还有一个请求正文信息,用于传递请求得参数。

3、Post请求和Get 请求的区别

1、传递参数长度

由于Get 请求的请求参数是在Url后面接着的,所以其参数长度收Url长度的限制,而Post 请求的参数可以放在请求正文当中,所以其长度一般来说都不受限制(受限于传输最大数据的大小)。

2、信息的安全性

Get请求的参数编码在Url上,所以可以直接看Url就能看到请求信息,所以其对于私密信息来说不太安全,而Post方法放在请求体当中,所以相对安全一些,当然对于密码等信息,传输过程中最好还是加密。

3、幂等性

幂等性的定义(Http1.1原文):Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.
从定义上看,HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。
HTTP GET方法用于获取资源,不应有副作用,所以是幂等的。
HTTP POST方法用于创建资源,会改变服务器资源,所以不是幂等的。

二、Http响应



Http响应与Http请求类似,也包括三个部分,分别是状态行、响应头、响应体。

1、状态行(HTTP/1.1 200 OK)


状态行包括协议版本号、状态码、状态描述。
状态代码:状态代码由3位数字组成,表示请求是否被理解或被满足。
状态描述:状态描述给出了关于状态代码的简短的文字描述。
状态代码的第一个数字定义了响应的类别,后面两位没有具体的分类。


第一个数字有五种可能的取值:
- 1xx:   指示信息—表示请求已接收,继续处理。
- 2xx:   成功—表示请求已经被成功接收、理解、接受。
- 3xx:   重定向—要完成请求必须进行更进一步的操作。
- 4xx:   客户端错误—请求有语法错误或请求无法实现。
- 5xx: 服务器端错误—服务器未能实现合法的请求。

   状态代码 状态描述    说明

   200      OK    客户端请求成功
   400         Bad Request   由于客户端请求有语法错误,不能被服务器所理解。
   401         Unauthonzed   请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用
   403   Forbidden   服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因
   404   Not Found   请求的资源不存在,例如,输入了错误的URL。
   500     Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
   503      Service Unavailable   服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。

2、响应头

  • Location:响应报头域用于重定向接受者到一个新的位置。
  • Server: 响应报头域包含了服务器用来处理请求的软件信息。
  • Content-Encoding:实体报头域被使用作媒体类型的修饰符,它的值指示了已经被应用到实体正文的附加内容编码,因而要获得Content- Type报头域中所引用的媒体类型,必须采用相应的解码机制。
  • Content-Language:实体报头域描述了资源所用的自然语言。Content-Language允许用户遵照自身的首选语言来识别和区分实体。
  • Content-Length:实体报头域用于指明正文的长度,以字节方式存储的十进制数字来表示,也就是一个数字字符占一个字节,用其对应的ASCII码存储传输。
  • Content-Type:实体报头域用语指明发送给接收者的实体正文的媒体类型。例如:
  • Content-Type: text/html;charset=ISO-8859-1
  • Set-Cookie:设置Cookie,记录状态用于下次访问。

3、响应体

如图所示:



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

http消息体和响应体

HTTP基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。HTTP允许传输任意类型的数据对象,HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后...

Http请求和Http响应详细解析

http://www.cnblogs.com/linjiqin/p/3560152.html(转载) 一次完整的HTTP请求所经历的7个步骤 HTTP通信机制是在一次完整的HTTP通信过程中,We...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

HTTPS安全通信:HTTPS与SSL

1. HTTPS概念         1)简介            HTTPS(全称:Hypertext Trans...

HttpsURLConnection实现SSL的GET/POST请求

package org.nercita.weixin.util; import java.security.cert.CertificateException; import java.securi...

HTTP请求和HTTP响应介绍

1、请求报文介绍一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。(1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3...

Git使用教程

一、分布式版本控制系统Git简介 Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而...

HTTP响应头信息和请求头信息详解

web性能测试中有一个web资源分析,web资源是从服务器入手对web服务器的性能进行分析。所以了解一下以下信息是很有必要的哦。

HTTP响应头信息和请求头信息详解

HTTP响应头信息和请求头信息详解
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)