GET 请求与 POST 请求的区别
TIP
(1)post
更安全(不会作为 url
的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post
发送的数据更大(get
有 url
长度限制)
(3)post
能发送更多的数据类型(get
只能发送 ASCII
字符)
(4)post
比 get
慢
(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
的方式进行编码,key
和 val
都进行了 URL
转码。
(2)multipart/form-data
:该种方式也是一个常见的 POST
提交方式,通常表单上传文件时使用该种方式。
(3)application/json
:服务器消息主体是序列化后的 JSON
字符串。
(4)text/xml
:该种方式主要用来提交 XML
格式的数据。
HTTP状态码304
TIP
HTTP
状态码 304
是 HTTP
协议中用于优化性能和减少不必要数据传输的一种机制。
但是网站在一定时间内一直处于 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地址