HTTP和TCP的不同
TCP和UDP的区别
输入URL到页面的呈现
浏览器为什么要跨域?
CORS跨域的原理
跨域资源共享(CORS)是一种机制,是W3C标准。它允许浏览器向跨源服务器,发出XMLHttpRequest或Fetch请求。并且整个CORS通信过程都是浏览器自动完成的,不需要用户参与。
而使用这种跨域资源共享的前提是,浏览器必须支持这个功能,并且服务器端也必须同意这种”跨域”请求。因此实现CORS的关键是服务器需要服务器。通常是有以下几个配置:
- Access-Control-Allow-Origin
- Access-Control-Allow-Methods
- Access-Control-Allow-Headers
- Access-Control-Allow-Credentials
- Access-Control-Max-Age
过程分析:
- 1.浏览器先根据同源策略对前端页面和后台交互地址做匹配,若同源,则直接发送数据请求;若不同源,则发送跨域请求。
- 2.服务器收到浏览器跨域请求后,根据自身配置返回对应文件头。若未配置过任何允许跨域,则文件头里不包含 Access-Control-Allow-origin 字段,若配置过域名,则返回 Access-Control-Allow-origin + 对应配置规则里的域名的方式。
- 3.浏览器根据接受到的 响应头里的 Access-Control-Allow-origin 字段做匹配,若无该字段,说明不允许跨域,从而抛出一个错误;若有该字段,则对字段内容和当前域名做比对,如果同源,则说明可以跨域,浏览器接受该响应;若不同源,则说明该域名不可跨域,浏览器不接受该响应,并抛出一个错误。
http请求可以怎么拦截
- 在浏览器和服务器进行传输的时候,可以被nginx代理所拦截,也可以被网关拦截
https的加密方式
- HTTPS主要是采用对称密钥加密和非对称密钥加密组合而成的混合加密机制进行传输。
- 也就是发送密文的一方用”对方的公钥”进行加密处理”对称的密钥”,然后对方在收到之后使用自己的私钥进行解密得到”对称的密钥”,这在确保双发交换的密钥是安全的前提下使用对称密钥方式进行通信。
http相关
浏览器缓存
浏览器缓存_1
浏览器缓存_2
浏览器缓存_3
浏览器缓存_4
浏览器缓存_5
nginx
跨域解决方案
HTTP/1.0和HTTP/1.1有什么区别
- 1.长连接: HTTP/1.1支持长连接和请求的流水线,在一个TCP连接上可以传送多个HTTP请求,避免了因为多次建立TCP连接的时间消耗和延时
- 2.缓存处理: HTTP/1.1引入Entity tag,If-Unmodified-Since, If-Match, If-None-Match等新的请求头来控制缓存,详见浏览器缓存小节
- 3.带宽优化及网络连接的使用: HTTP1.1则在请求头引入了range头域,支持断点续传功能
- 4.Host头处理: 在HTTP/1.0中认为每台服务器都有唯一的IP地址,但随着虚拟主机技术的发展,多个主机共享一个IP地址愈发普遍,HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会400错误
介绍一下HTTP/2.0新特性
- 1.多路复用: 即多个请求都通过一个TCP连接并发地完成
- 2.服务端推送: 服务端能够主动把资源推送给客户端
- 3.新的二进制格式: HTTP/2采用二进制格式传输数据,相比于HTTP/1.1的文本格式,二进制格式具有更好的解析性和拓展性
- 4.header压缩: HTTP/2压缩消息头,减少了传输数据的大小
说说HTTP/2.0多路复用基本原理以及解决的问题
- 1.TCP慢启动: TCP连接建立后,会经历一个先慢后快的发送过程,就像汽车启动一般,如果我们的网页文件(HTML/JS/CSS/icon)都经过一次慢启动,对性能是不小的损耗。另外慢启动是TCP为了减少网络拥塞的一种策略,我们是没有办法改变的
- 2.多条TCP连接竞争带宽: 如果同时建立多条TCP连接,当带宽不足时就会竞争带宽,影响关键资源的下载。
- 3.HTTP/1.1队头阻塞: 尽管HTTP/1.1长链接可以通过一个TCP连接传输多个请求,但同一时刻只能处理一个请求,当前请求未结束前,其他请求只能处于阻塞状态。