URL(Uniform Resource Locator) 地址用于描述一个网络上的资源,  基本格式如下:


schema://host[:port#]/path/.../[?query-string][#anchor]


scheme        指定低层使用的协议(例如:http, https, ftp)

host          HTTP服务器的IP地址或者域名

port#         HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/

path          访问资源的路径

query-string  发送给http服务器的数据

anchor-       锚,这是一种超链接,只是页面内部的超链接,如果网页很长,而且里面的内容分为N个部分,这样就可以在网页顶部设置一个锚点,

                  方便浏览者点击相应锚点,快速到达本页面相应位置。

               URL中,锚点在最右边,前面有一个字符“#”。


举例:

http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff

Schema(协议):                 http
host(域名):                   www.mywebsite.com
path(资源路劲):               /sj/test/test.aspx
Query String(参数):           name=sviergn&x=true
Anchor(锚):                   stuff

----------------------------------------------------------------------------------------------------------

                                                                                                               http请求报文

http请求报文的结构:   浏览器发送给web服务器的http请求报文,如下所示:



先看Request 消息的结构, Request 消息分为3部分:

第一部分叫Request line, ------------>起始行

第二部分叫Request header,  ------------>首部

第三部分是body, ------------>主体


注意:header和body之间有个空行,



第一行中的Method表示请求方法,比如"POST","GET",  Path-to-resoure表示请求的资源, Http/version-number 表示HTTP协议的版本号

当使用的是"GET" 方法的时候, body是为空的

我们打开Fiddler 捕捉一个登录的Request 然后分析下它的结构, 在Inspectors tab下以Raw的方式可以看到完整的Request的消息:





请求方法        请求资源即URL                    http协议的版本号

POST https://anp.njpji.cn/un_manager/user/toLogin HTTP/1.1                                                             ---------起始行
Host: anp.njpji.cn                                                                                         --------->下面是header首部
Connection: keep-alive
Content-Length: 85
Accept: */*
Origin: https://anp.njpji.cn
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: https://anp.njpji.cn/un_manager/views/session/login.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_70a44149803685eae3a9163f23ea34b7=1566289322,1566346318; JSESSIONID=5C305287359661147AD9C5570451A7E8
                                                                                                                       ------->空行
username=7droqslNzQg%3D&password=Jrrw3HiJ%2BArijSvr3jrq1Q%3D%3D&verificationCode=0237                                  ------> 此处为body主体

                                                                                                                  http响应报文

http响应报文结构:    web服务器发送给浏览器的http响应报文内容:


Response消息的结构, 和Request消息的结构基本一样。 同样也分为三部分:

第一部分叫Response line, ------------>响应行

第二部分叫Response header,  ------------>响应首部

第三部分是body, ------------>主体


header和body之间也有个空行,


第一行,起始行中有状态码,和状态码消息


HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Sat, 07 Dec 2019 09:05:17 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Frame-Options: SAMEORIGIN

49
{"respCode":"00","respDesc":"用户账户信息校验成功","data":null}
0

                                                                               http主要请求方法:get、post 以及区别

http请求方法:


Get和Post方法的区别


Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE.。

一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。

我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

GET和POST的区别:

1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456 。

   POST方法是把提交的数据放在HTTP包的Body中.

2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,

   如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

-------------------------------------------------------------------------------------------------------------

方法:

get:请求指定的页面信息,并返回实体主体;

head:类似于get请求,只不过返回的响应中,没有具体的内容,用于获取报头;

post:向指定资源提交数据进行请求(例如:提交表单或者上传文件),数据被包含在请求体中。

      post请求可能会导致新的资源的建立或对已有的资源的修改;

put:从客户端向服务器传送的数据,取代指定文档的内容;

delete:请求服务器删除指定的页面;


-------------------------------------------------------------------------------------------------------------------------------------------
下面为get方法,并带有参数

GET https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=sitehao123&wd=%E4%B8%AD%E5%9B%BD&rsv_pq=ee5e88db00155eb1&rsv_t=9b46NVmtUvhHk8NuPqytTgFcpScJZfmNOSxhFBaAu5rlcjCsQ9PfON8N98xNepLuQQ&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_sug3=10&rsv_sug1=1&rsv_sug7=001&prefixsug=%25E4%25B8%25AD%25E5%259B%25BD&rsp=8&rsv_sug9=es_0_1&inputT=10643&rsv_sug4=12203&rsv_sug=9 HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Referer: https://www.baidu.com/?tn=sitehao123&H123Tmp=nunew11
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BIDUPSID=1655D38E3EB9FAF984C3D838C40375AC; PSTM=1564563068; BD_UPN=12314553; BAIDUID=8B7CDF0DBB1D8B4D8DC4288AE32C655B:FG=1; ispeed_lsm=2; MCITY=-%3A; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDSFRCVID=7AKsJeCCxG3e2tjwgnO1j79umibdsgZhD6873J; H_BDCLCKID_SF=tbAD_CKKf-3bfTuGDJOqKn0thxtX2bjMfbTf_p7F5l8-hCQXDPjf-n-shxTw-lQCMJ7PBfQaKqcxOKQphPbm5nIXQ48qbpbjb2oiLInN3KJm_UK9bT3v5Duy-tQ42-biW2tH2Mbdax7P_IoG2Mn8M4bb3qOpBtQmJeTxoUJ25DnJhhCGe6D2e5Q3jNLsbtQb26r-3--8-bTVHRDk5-Qo-4_eqxby26Pf0m3eaJ5n0-nnhnK45-6bbPCgDfCfqRQL2CrbQb3u2p--bK0Ry66jK4JKDG0tJ6OP; H_PS_PSSID=1469_21080_30211_30071_26350; H_PS_645EC=881dEMXJjSRsjFsceTvx5SWR2G%2FilqMyfp6iGiw%2BDfeUUG0wTEM81HCuM8v1K4C3CQ; delPer=0; BD_CK_SAM=1; PSINO=5; BDSVRTM=113

注意:浏览器可以在get方法中把数据传给服务器,数据放在URL的?后面;

     百度搜索中,查询字符串以名=值这样的形式出现,多个名值之间用&分隔开;

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

下面为post方法:


POST https://anp.njpji.cn/un_manager/user/toLogin HTTP/1.1
Host: anp.njpji.cn
Connection: keep-alive
Content-Length: 85
Accept: */*
Origin: https://anp.njpji.cn
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Referer: https://anp.njpji.cn/un_manager/views/session/login.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_70a44149803685eae3a9163f23ea34b7=1566289322,1566346318; JSESSIONID=5C305287359661147AD9C5570451A7E8

username=7droqslNzQg%3D&password=Jrrw3HiJ%2BArijSvr3jrq1Q%3D%3D&verificationCode=0237

                                                                                                                  

                                                                     http状态码

http状态码:


每个http响应报文,都会携带一个状态码,用于告诉客户端请求是否成功。状态码是一个3位数字的代码。


http状态码存在于http的响应报文中,其作用是web服务器告诉客户端发生了什么事。


http响应报文中的第一行,由http协议版本号、状态码、状态消息3部分组成。

------------------------------------------------------------------------------------------------------------


Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.

HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

1XX:提示信息 - 表示请求已被成功接收,继续处理

2XX:成功 - 表示请求已被成功接收,理解,接受

3XX:重定向 - 要完成请求必须进行更进一步的处理

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

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

http接口响应一般是JSON格式

json语法格式:包括用大括号保存对象、用键值对表示对象、用逗号分隔每个对象、用中括号保存数组。

12-25 22:59