引言:HTTP请求包含4个部分,分别是URL(统一资源定位符)、method(请求方式)、Headers(请求头)、Body(请求体)
一、了解URL、URI、及URL格式
URL,全称:Uniform Resource Locator 译名:统一资源定位符,用于准确描述Internet上某一资源的地址;
通常我们访问的网页都是有一个URL地址,或称Web地址,俗称:网址;
需要明确的是,URL地址不仅仅是Internet上的站点,也可以是本地磁盘,或者局域网上的某一台计算机,只是更多的是Internet上的站点;
URI,全称:Uniform Resource Identifier 译名:统一资源标识符,用来唯一的标识一个资源,URL是一种具体的URI;
URL的格式,如下图:
schema://host[:port#]/path/…/[query-string][#anchor],其中:
schema:表示url底层使用协议,如:http、https、ftp
port#:表示服务器使用的端口号,默认:80,可以不填写;但是如果不是80,而使用了别的端口,就必须写明;如:
http://www.baidu.com/8080
path:表示访问资源的地址
query-string:发送给服务器的数据(参数)
anchor:锚(锚点,是一种超链接,只是它是页面内部的超链接。意思是:如果一个网页很长,里面的内容分为N个部分。这样我们就可以在网页顶部设置一些锚点,这样浏览者单击相应锚点,即可快速显示到该页面相应的位置,而不必在一个很长的页面自行滑动寻找,锚点在URL的最右边,前面以“#”标识)
二、HTTP协议的请求方式(method)
下面分别就HTTP协议的请求方式进行了解。
下面就把最常用的GET方法、POST方法的Fiddler抓包的截图最为例子,简单介绍一下。
1.GET方法
a.不带参数的GET方法
b.带参数的GET方法(GET方法也可以传递给服务器)
查询字符串(Query-string)以“名=值”的形式呈现,多个值间用“&”符连接。Web地址有时候因为参数多而显得长,在Fiddler中,使用WebForms选项卡可以清楚的看到GET方法中的查询字符串参数:
2.HOST方法
POST方法通常用来把表单中填好的数据发送给服务器。以登录CSDN为例:
(请求体:可以分为三大类,Query String、文件分割、其它类型;其中,Query String 指的是application/x-www-form-urlencoded类型的请求体,这是Form表单提交的默认数据类型)若,你们的POST请求中,content-Type:application/x-www-form-urlencoded类似支持这样的格式,那么在WebForms选项卡中,可以看到body中的参数。不过若不支持,就看不到了:
三.GET与POST的区别
a.参数放置位置不同;GET方法是将参数放置在URL尾部,以“?”与URL隔开、参数与参数之间以“&”分隔;POST方法是将参数放置在HTTP包的body中;
b.参数大小限制不同;GET方法的参数大小是有限制的,大约1M(因为浏览器对URL的长度有限制);,而POST方法提交的数据基本没有限制;
c.取得变量的值的方式不同;GET方法使用Request.QueryString来获取变量的值;而POST方法是用Request.Form获取变量的值;(Request.QueryString主要是获取URL里面“?”后的变量值,Request.Form是获取post方法表单中的变量值)
d.安全性不同;GET方法将参数之间暴露在URL上,很明显安全性弱于POST方式;
四、状态码的介绍
1.状态码(HTTP Status Code)定义:每个HTTP响应报文都会携带一个状态码,用于告诉客户端请求是否成功;状态是一个3位数字的代码。在HTTP响应报文的第一行中;(提示:HTTP响应报文第一行包含:HTTP协议版本号、状态码、状态消息)
2.状态码的分类:第一个数字表示了响应的类别;
3.下面列举几个常见且比较重要的状态码:
五、Request、Response报文格式
1.Request报文格式:
<request-line>
<headers>
<blank line>
<request-body>
2.Response报文格式:
<status-line>
<headers>
<blank line>
<response-body>