http|http 面试题

极客时间课程
Web协议详解与抓包实战
get post 的区别

get 一般用于向服务端请求数据,一般会有缓存机制,一般将参数放到url中,也可以放到body中 post 一般用于向服务端提交数据,不会缓存,一般将参数放到body中,也可以将部分参数放到url中

关于安全性我们常听到GET不如POST安全,因为POST用body传输数据,而GET用url传输,更加容易看到。但是从攻击的角度,无论是GET还是POST都不够安全,因为HTTP本身是明文协议。每个HTTP请求和返回的每个byte都会在网络上明文传播,不管是url,header还是body。这完全不是一个“是否容易在浏览器地址栏上看到“的问题
为了避免传输中数据被窃取,必须做从客户端到服务器的端端加密。业界的通行做法就是https——即用SSL协议协商出的密钥加密明文的http数据。这个加密的协议和HTTP协议本身相互独立。如果是利用HTTP开发公网的站点/App,要保证安全,https是最最基本的要求
参考资料: https://www.zhihu.com/question/28586791
webSocket 和 ajax 的区别
1.生命周期不同。 websocket建立的是长连接,在一个会话中一直保持连接;而ajax是短连接,数据发送和接受完成后就会断开连接。 2.适用范围不同 websocket一般用于前后端实时数据交互,而ajax前后端非实时数据交互。 3.发起人不同 Ajax技术需要客户端发起请求,而WebSocket服务器和客户端可以相互推送信息。

https 的握手过程
---------------------------------- 客户端发起https请求 -> 服务端返回给客户端证书 -> 客户端验证证书合法性 -> 如果合法,客户端生成一个随机数,并将该随机数用公钥加密后发送给服务端 -> 服务端用私钥解密出随机数,将内容用随机数加密,然后将加密后的内容发送给客户端 -> 客户端用之前生成的随机数解密获取内容 ----------------------------------如果客户端验证证书不合法呢? -> 会弹出一个警告框,提示证书存在问题,让用户选择是否继续 证书签名过程和如何防止被串改?

http2 的特点
二进制传输 Header 压缩,顺便吹了一下哈夫曼编码 多路复用 服务器推送

缓存类型
### 强制缓存 cache-control、express### 协商缓存 304、ETag、modify

关于状态码
301、302、307、308 的区别 301 永久重定向302 临时重定向303 临时重定向 发送Post请求,收到303,直接重定向为get,发送get请求,不需要向用户确认307 临时重定向 客户端发送post请求返回307时,浏览器询问用户是否再次post

【http|http 面试题】状态码 307 与 302 之间的唯一区别在于,当发送重定向请求的时候,307 状态码可以确保请求方法和消息主体不会发生变化。当响应状态码为 302 的时候,一些旧有的用户代理会错误地将请求方法转换为 GET:使用非 GET 请求方法而返回 302 状态码,Web 应用的运行状况是不可预测的;而返回 307 状态码时则是可预测的。对于 GET 请求来说,两种情况没有区别。
参考 https://www.cnblogs.com/wuguanglin/p/redirect.html
http http2 https 区别
111

什么是简单请求和非简单请求
非简单请求下发起的 options
ww

cookie 跨域时候要如何处理
asdf

xss、csrf 有了解过吗,如何防范
介绍一下浏览器缓存策略
tcp 三次握手
nginx 有了解吗 扯了一下跨域如何配置/转发
缓存策略配置
地址重定向配置

    推荐阅读