HTTP核心面试题(obsoleted)

401 阅读1分钟

请列举常用的请求头

请列举常用的响应头

说说HTTP协议的缓存机制

TCP的三次握手与四次挥手

  • TCP协议是一个传输层协议,其宗旨是【稳定连接+可靠传输】;
  • 三次握手的目的就是要确保稳定连接:即服客双方都要确保彼此都能收发信息;
  • 三次握手要能够手绘其基本形状:由客户端触发的N字形;
  • 四次挥手的目的是可靠传输:即服客双方都确认彼此的所有数据均发送完毕;
  • 四次挥手的基本形状:从客户端出发的一个V字形+从服务端出发的一个V字形;
  • 三次握手如果中断,作废重新发起;
  • 四次挥手如果中断,作废重新发起;

TCP三次握手.png

TCP四次挥手.jpg

解决跨域问题有哪些方案?

  • JSONP:
<script>
    //前后端共同协商好的前端数据处理函数
    function onDataGot(dataFromJsonp){
        //对数据的具体处理逻辑
        localStorage.set("dataFromServer",dataFromJsonp)
    }
</script>

<script src="爱访问谁访问谁,都不受同源策略(CORS)的限制,目标地址返回的任何信息都作为JS代码原地执行起来:例如目标地址返回:onDataGot({'msg':'今晚打老虎'})   ,那么前端就只需要真的有同名函数即可"/>

/*以下两段脚本基本等效*/
<script>
    onDataGot({'msg':'今晚打老虎'})
</script>
<script src="通过远程Url返回一段具体的脚本并原地执行之">
</script>
  • 正向代理:服务器互访不受同源策越(CORS)的限制 配置案例:访问本地的/search即等同于访问百度的搜索接口
location /search {
   proxy_pass   https://www.baidu.com/s;
}
localhost:80/search?wd=你要搜索的内容
  • 服务端允许跨域 服务器端配置响应头声明允许哪些客户端跨域来访问我
//允许特定的前端IP(前端工程部署的位置而非浏览器所在的IP)跨域访问我
Access-Control-Allow-Origin:123.456.789.012

//允许所有客户端跨域访问我
Access-Control-Allow-Origin:*