formdata格式传递参数_HTTP详解(二):HTTP报文格式

6d3ef8a110ad711a66e2eb20c89e6b82.png

HTTP有两种报文格式:

请求报文:由客户端向服务器端发出的报文。

响应报文:从服务端到客户端的报文。

我们呢,一个一个来说一下,先说请求报文。先看一下大学期间比较熟悉的一张图

2eb1b40d0c4a43a7543ed79c5e4a7b0e.png
c59777ac05794a57b547cc1389d68de3.png

请求报文:

我们先从最右边开始看,可以看出来,HTTTP请求报文由三部分构成,分别是:请求行、请求头、请求实体。当然,严格意义上来说,应该还包括空行。


一.请求行:

首先,为什么要用请求行?

其实,请求航的存在其主要目的就是为了区分报文是请求报文还是响应报文,以及记录相应的URL以及协议版本。可以看出,请求行主要由三部分构成:方法、请求资源的URL、HTTP的版本。其中URL和版本无须多说,咱们主要说一下“方法”;

HTTP请求的方法主要有:GET、POST、PUT、DELETE、OPTIONS、HEAD、TRANCE、CONNECT

其中,最常用的是GET和POST请求,但是我们都来了解一下。

  1. GET:想特定的资源发出请求。
  2. POST:向指定的资源提交相应的数据金星焕处理请求,比如说提交表单、上传文件。数据被包含在请求实体中。
  3. PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  4. DELETE:请求服务器删除指定的页面
  5. OPTIONS:允许客户端查看服务器的性能。
  6. HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  7. TRANS:回显服务器收到的请求,主要用于测试或诊断。
  8. CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

我们重点来说一下GET和POST方法。

1、GET请求,请求的数据会附在URL后面,已key=value(参数名=参数值)的形式传递,具体例子:http://localhost:8888/abc/login.jsp?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD,在这里有一点十分的重要:GET请求中的参数用“?”分割URL实体和传递参数,而参数之间用“&”进行分割。其中,如果传输的数据是英文字母或者数据,则原样发送;如果时空格,转换成“+”;如果是中文或者其他的字符,则直接把传输的数用BASE64加密,转换成十六进制输出,比如后面的%E4%BD%A0%E5%A5%BD就是16进制的输出。

POST请求,则是把提交的数据放在HTTP请求实体中。

2、GET请求最大长度是有限制的,可能有一种说法是GET请求传递参数的最大长度是1024KB,其实这种说法是不准确的。实际中,URL并不存在参数上限的限制,HTTP规范里面也并没有对URL的长度进行限制。而这个限制主要是来自浏览器和服务器。比如IE6.0浏览器所支持的最大长度的URL长度是2083KB,firefox 3.0.3浏览器所支持的最大长度是7764KB.

POST请求传递的数据是没有大小限制的,HTTP规范中也没有对其进行相应的限制。只不过是处理器的处理能力限制了它。

一般来说,GET请求传递的数据大小要小于POST传递数据的大小。

3、POST的安全性要比GET请求的安全性要高一些。因为GET请求传递的参数是后缀在URL后面的,可以直接看到,所以安全性较POST请求安全性会差一些!

我们来看一下具体请求报文示例:

c7eddcfca07ab57308ca004026333971.png

其中第一行就是请求行,上图中“GET”代表着请求的方法为GET请求,HTTP/1.1 代表这使用的HTTP协议的版本,中间代表着URL。


二.请求头:

1、请求头的作用:请求头是用来通知服务器有关客户端请求的一些信息。

2:请求头的格式:请求头由关键字/值对构成,每行一对。关键字和值用英文冒号“:”隔开,值对之间用英文逗号

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页