http
什么是http协议?
http协议: 对浏览器客户端 和 服务器端 之间数据传输的格式规范
如何解决版本发行的缓存问题?
在url添加时间戳进行版本更新
防止非法链接(referer)
referer: 当前请求来自于哪里 可以用拦截器
<filter> <filter-name>ImgFilter</filter-name> <filter-class>com.itmayiedu.filter.ImgFilter</filter-class> </filter> <filter-mapping> <filter-name>ImgFilter</filter-name> <url-pattern>/static/*</url-pattern> </filter-mapping> |
public class ImgFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException { System.out.println("初始化..."); }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("doFilter...."); HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; //获取请求头中来源 String referer = req.getHeader("referer"); //获取当前请求名称 String serverName = request.getServerName(); System.out.println("referer:"+referer+"----serverName:"+serverName+":"+serverName); if(referer==null||(!referer.contains(serverName))){ req.getRequestDispatcher("/imgs/error.png").forward(req, res); return ; } chain.doFilter(req, res); }
public void destroy() {
}
} |
http协议版本
状态码: 服务器处理请求的结果(状态)
常见的状态:
200 : 表示请求处理完成并完美返回
302: 表示请求需要进一步细化。
304: 读取本地缓存
404: 表示客户访问的资源找不到。
500: 表示服务器的资源发送错误。(服务器内部错误)
Https与Http的区别
1、https 协议需要到 ca 申请证书,一般免费证书较少,因而需要一定费用。
2、http 是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议
3、http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
4、http 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 http 协议安全。
https工作原理?
https优缺点?
虽然说 HTTPS 有很大的优势,但其相对来说,还是存在不足之处的:
(1)HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近 50%,增加 10% 到 20% 的耗电;
(2)HTTPS 连接缓存不如 HTTP 高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL 证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗。
(5)HTTPS 协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
http请求工具
客户端模拟http请求工具
Postmen(谷歌插件)、RestClient
HTTP协议与TCP/IP协议的关系
HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。
如何理解HTTP协议是无状态的
HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
什么是长连接、短连接?
在HTTP/1.0中,默认使用的是短连接。
建立连接---数据传输----关闭连接
在HTTP/1.1起,默认使用长连接
建立连接——数据传输…(保持连接)…数据传输——关闭连接
长连接是什么时候关闭
1,响应头Keep-Alive: timeout。这个值能够让一些浏览器主动关闭连接,这样服务器就不必要去关闭连接了。
2,tcp自动探测一次,发现对方关闭,则断开连接
什么时候用长连接?什么时候用短连接?
长连接多用于操作频繁,例如:数据库的连接用长连接,
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好
长连接与短连接应用场景
长连接应用于场景 客户端(移动App)与服务器消息推送、RPC远程调用