GET 参数通过URL传递,POST参数放在 request body 中
GET 请求在URL中传递的参数是有长度限制的,而 POST 没有
POST 比 GET 更安全
GET 请求只能进行URL 编码,而 POST 支持多种编码方式
GET 请求参数会被完整保留在浏览历史记录里,而 POST 的参数不会被保留
GET 产生一个TCP数据包,POST 产生两个TCP数据包
对于 GET 浏览器会把 http header 和 data 一并发送出去,服务器返回数据
对于 POST 浏览器会先发送 header,再发送 data,服务器返回数据

1、输入 url 后,需要通过 url 找到其服务器的 ip,为了找到该ip
2、浏览器会先寻找缓存,查看缓存中是否有记录(浏览器缓存 =》 系统缓存 =》 路由缓存)
3、若没找到,再次查找系统的 hosts文件 中是否有记录
4、最终没有,则查询 DNS 服务器,得到 ip 后
5、浏览器会根据 ip 以及端口号,构造一个 http 请求,并将这个请求封装在一个TCP包中
6、这包会经过传输层,网络层,数据链路层,物理层,最终到达服务器
7、服务器接收到该请求后,进行解析,返回相应的html给到浏览器
8、浏览器根据 html 来构建 DOM 树,如果在构建过程中遇到js脚本或外部js链接,则会停止DOM树,来执行和下载js代码,这就会造成阻塞
9、之后,根据外部样式,内部样式,内联样式构建一个CSS对象模型树CSSOM树
10,构建完成后和 DOM 树合并为渲染树(这一步的操作只要是排除非视觉节点,比如script,meta以及displa为none的节点)
11、最后进行布局(确定各个元素的位置和尺寸)
12、由于hrml 文件可能存在图片,视频,音频等资源,在构建 DOM树 过程中,遇到这些都会进行并行下载。
13、浏览器对每个于的并行下载数量有一定的限制(4~6)
14、在这下载过程优化的过程中,就可能涉及到强缓存或协商缓存
XSS(跨站脚本攻击)是一种代码注入攻击,攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行,获取敏感信息(Cookie、sessionID)
CSRF(跨站请求伪造)攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨域请求,利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击网站执行某项操作的目的
XSS预防手段:对输入的URL以及参数进行过滤,过滤掉导致脚本执行的相关内容;对动态输入到页面的内容进行html编码,使脚本无法在浏览器中执行
CSRF防御手段:验证HTTP Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证