1️⃣ GET请求与POST请求

2️⃣ 前言

HTTP设定了八种发送请求方式(也称为八大“动作”)。这八种方法没有任何本质上的区别。只是让请求,更加有语义化而已。 八种方法分别为:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT 这八种方法最终经过“岁月沉淀”后,最常用的是这两种:GET、POST

2️⃣ GET

  1. 1. 含义:从指定的资源获取数据(一种“索取”的感觉)。
  2. 2. 什么时候使用GET请求较为合适?
  3. (1)单纯获取数据的时。
  4. (2)请求非敏感数据时。

2️⃣ POST

  1. 1.含义:向指定的资源提交要被处理的数据(一种“交差”的感觉)。
  2. 2.什么时候使用POST请求较为合适?
  3. (1)传送相对敏感数据时。
  4. (2)请求的结果有持续性的副作用,例如:传递的数据要写入数据库时。
  5. 备注:使用了POST不代表的绝对的安全。

2️⃣ 常见的GET请求:

  1. 1.浏览器地址栏输入网址时(即浏览器请求页面时,且无法手动更改)。
  2. 2.可以请求外部资源的html标签,例如:<img> <a> <link> <script>,且无法手动更改。
  3. 3.发送Ajax时若没有指定发送请求的方式,则使用GET方式,或者明确指出了使用GET请求。
  4. 4.form表单提交时,若没有指明方式,默认使用GET

2️⃣ 常见的POST请求:

  1. 1.发送Ajax时,明确指出了使用POST方式时。
  2. 2.form表单提交时明确指出使用POST方式

2️⃣ GET 对比 POST

image.png

2️⃣ 八种请求方式

image.png

2️⃣ GET / POST 请求报文

  1. (1) Accept
  2. 指定客户端能够接受的内容类型,内容类型的先后顺序表示客户端接受的先后顺序
  3. 比如:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
  4. (2) Accept-Encoding
  5. 指定客户端浏览器可以支持的web服务器返回内容压缩编码类型
  6. 允许服务器在将输入内容发送到客户端以前进行压缩,以节约带宽。
  7. 比如:Accept-Encoding:gzip,deflate
  8. (3) Accept-Language
  9. 指定http客户端浏览器用来展示返回信息所先选择的语言
  10. 比如:Accept-Language:zh-cn,zh;q=0.5 后面的q表示权重
  11. (4) Connection
  12. 表示是否需要持久连接,
  13. 比如:Connection:keep-Alive
  14. (5) Content-Length
  15. 用于描述http消息实体的传输长度.需要注意的是:在http协议中,消息实体的长度和消息实体的传输长度是有区别的。
  16. 比如说gzip压缩下,消息实体长度是压缩前的长度,但是消息实体的传输长度是gzip压缩后的长度
  17. (6) Content-Type
  18. 显示此http请求提交的内容类型
  19. 比如:Content-Type:application/x-www-form-urlencoded;charset:UTF-8
  20. "application/x-www-form-urlencoded"是浏览器的默认值,表示表单数据向服务器提交时所采用的编码类型。
  21. (7) Cookie
  22. http请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器
  23. (8) Host
  24. 请求的web服务器域名地址
  25. 例:www.baidu.com
  26. (9) Origin
  27. 跨域的时候,get,post都会显示origin,同域的时候get不显示origin,post显示origin
  28. (10) Referer
  29. 包含一个url,用户从该url代表的页面触发访问当前请求的页面
  30. (11) User-Agent
  31. http客户端运行的浏览器类型,详情。后台可以根据该头部信息,判断当前的http请求的客户端浏览器类型
  32. (12) X-Requested-With
  33. 用来判断客户端的请求是Ajax请求(异步)还是其他请求(同步)
  34. 后台可以利用request.getHeader("x-requested-with")为null判断是同步请求,为XMLHttpRequest则是Ajax异步请求
  35. 例:X-Requested-With:XMLHttpRequest
  36. (13) DNT: 1
  37. 浏览器告诉服务器:请求报头指示该用户的跟踪的偏好。它可以让用户指出他们是否更喜欢隐私而不是个性化内容。
  38. 0:用户喜欢允许在目标站点上进行跟踪。
  39. 1个:用户不希望在目标站点上被跟踪。
  40. 空值:用户尚未指定有关跟踪的首选项。

1️⃣ 响应报文

3️⃣ 报文首行

  1. HTTP/1.1 200 OK
  2. --协议名/协议版本 状态码

3️⃣ 报文头

  1. X-Powered-By: Express
  2. --服务器所采用的框架( 尽量不要让用户知道服务器具体采用的技术
  3. Content-Type: text/html; charset=utf-8
  4. --告诉浏览器返回资源的类型及编码格式
  5. Content-Length: 2
  6. --返回数据的长度
  7. ETag: W/"2-eoX0dku9ba8cNUXvu/DyeabcC+s"
  8. --协商缓存必要字段
  9. Date: Fri, 01 Nov 2019 08:24:19 GMT
  10. --响应的日期+时间
  11. Connection: keep-alive
  12. --服务器告诉浏览器,下次请求时,或许会采用长连接。