Skip to content

GET 请求与 POST 请求的区别

TIP

(1)post 更安全(不会作为 url 的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post 发送的数据更大(geturl 长度限制)

(3)post 能发送更多的数据类型(get 只能发送 ASCII 字符)

(4)postget

(5)post 用于修改和写入创建数据,get 一般用于搜索排序和筛选之类的操作,目的是资源的获取,读取数据

(6)Get请求的报文中实体部分为空,Post 请求的报文中实体部分一般为向服务器发送的数据

常见的HTTP请求头和响应头

HTTP Request Header 常见的请求头:

  • Accept:浏览器能够处理的内容类型
  • Accept-Charset:浏览器能够显示的字符集
  • Accept-Encoding:浏览器能够处理的压缩编码
  • Accept-Language:浏览器当前设置的语言
  • Connection:浏览器与服务器之间连接的类型
  • Cookie:当前页面设置的任何Cookie
  • Host :请求头指明了请求将要发送到的服务器主机名和端口号
  • Referer:发出请求的页面的URL
  • User-Agent:浏览器的用户代理字符串

HTTP Responses Header 常见的响应头:

  • Date:表示消息发送的时间
  • server:服务器名称
  • Connection:浏览器与服务器之间连接的类型
  • Cache-Control:控制HTTP缓存
  • content-type:表示后面的文档属于什么MIME类型

TIP

常见的 Content-Type 属性值有以下四种:

(1)application/x-www-form-urlencoded:浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。该种方式提交的数据放在 body 里面,数据按照 key1=val1&key2=val2 的方式进行编码,keyval 都进行了 URL 转码。

(2)multipart/form-data:该种方式也是一个常见的 POST 提交方式,通常表单上传文件时使用该种方式。

(3)application/json:服务器消息主体是序列化后的 JSON 字符串。

(4)text/xml:该种方式主要用来提交 XML 格式的数据。

HTTP状态码304

TIP

HTTP 状态码 304HTTP 协议中用于优化性能和减少不必要数据传输的一种机制。

但是网站在一定时间内一直处于 304 的状态,那么蜘蛛可能会降低对网站的抓取次数。相反,若网站变化的频率非常之快,每次抓取都能获取新内容,那么日积月累,回访率也会提高。

产生较多304状态码的原因:

  • 页面更新周期长或不更新
  • 纯静态页面或强制生成静态html

304状态码出现过多会造成以下问题:

  • 网站快照停止;
  • 收录减少;
  • 权重下降。

常见的HTTP请求方法

TIP

  • GET: 向服务器获取数据;
  • POST:将实体提交到指定的资源,通常会造成服务器资源的修改;
  • PUT:上传文件,更新数据;
  • DELETE:删除服务器上的对象;
  • HEAD:获取报文首部,与GET相比,不返回报文主体部分;
  • OPTIONS:询问支持的请求方法,用来跨域请求;
  • CONNECT:要求在与代理服务器通信时建立隧道,使用隧道进行TCP通信;
  • TRACE: 回显服务器收到的请求,主要⽤于测试或诊断。

IP协议的首部结构

TIP

ip 协议的首部结构一共 20 个字节:

第一个4字节:版本号、首部长度、服务类型、总长度

第二个4字节:标识、标志、片偏移

第三个4字节:生存时间、协议、校验和

第四个4字节:源ip地址

第五个4字节:目的ip地址

当在浏览器中输入 Google.com 并且按下回车之后发生了什么?

  1. 解析 URL,分析所需要使用的传输协议和请求的资源的路径,如果存在非法字符,则对非法字符进行转义后再进行下一过程。
  2. 缓存判断:浏览器会判断所请求的资源是否在缓存里,如果请求的资源在缓存里并且没有失效,那么就直接使用,否则向服务器发起新的请求。
  3. DNS 解析,拿到 IP 地址。
  4. 获取 MAC 地址,当浏览器得到 IP 地址后,数据传输还需要知道目的主机 MAC 地址。 4.1 MAC 地址获取方式:通过将 IP 地址与本机的子网掩码相与,可以判断是否与请求主机在同一个子网里,如果在同一个子网里,可以使用 APR 协议获取到目的主机的 MAC 地址,如果不在一个子网里,那么请求应该转发给网关,由它代为转发,此时同样可以通过 ARP 协议来获取网关的 MAC 地址,此时目的主机的 MAC 地址应该为网关的地址。
  5. 进行 TCP 三次握手通信双方建立可靠连接。
  6. 如果是 https 协议,需要进行 TLS 四次握手,建立加密通信和身份验证。
  7. 当页面请求发送到服务器端后,服务器端会返回一个 html 文件作为响应,浏览器接收到响应后,开始对 html 文件进行解析,开始页面的渲染过程。
  8. 进行页面渲染。
  9. TCP 四次挥手关闭连接。