HTTP常见字段有哪些?
找一个baidu的页面看看:
Host字段:客户端发送请求时,用来指定服务器的域名。
Content-Length字段:服务器在返回数据时,会有这个字段,表明本次回应的数据长度
Connecting字段:最常用于客户端要求服务器使用HTTP长连接机制,一边其他请求复用。
长连接的特点是只要任意一端没有明确提出断开链接,则保持TCP链接状态。HTTP1.1默认长连接,但为了兼容老版本的HTTP,需要指定为keep-alive
Content-Type字段:用于服务器回应时,告诉客户端本次数据是什么格式。
客户端请求时可以用Accept字段申明自己可以接受哪些数据格式。
Content-Encoding字段表明了数据的压缩方法,表示服务器返回的数据使用了什么压缩格式。
GET与POST有什么区别?
GET的语义是从服务器获取指定的资源,这个资源可以是静态的文本,页面,图片视频等,GET请求的参数位置一般是写在URL中,URL规定只能支持ASCII,所以GET请求的参数只允许ASCII字符,且浏览器会对URL的长度有限制。
POST的语义是根据请求负荷,(报文body)对指定的资源做出处理,具体的处理方式视资源类型而不同,POST请求携带数据的位置一般是写在报文body中,body中的数据可以是任意格式,只要客户端与服务器商量好即可,且浏览器不会对body大小作出限制。
GET和POST都是安全幂等的吗?(RFC规范)
GET是安全幂等,因为它是只读操作,可以对GET请求的数据做缓存,且在浏览器中GET可以保存为书签。
POST是不安全的,因为他是戏赠或提交数据的操作,会修改服务器上的资源,且多次提交会创建多个资源,所以不是幂等的。浏览器一般不会缓存POST请求,也不能把POST请求保存为书签。
如果实际过程中不遵守RFC规范,使用GET方法实现新增或删除数据的请求,那它就不安全幂等。
如果POST实现查询数据,自然就是安全幂等的。
什么是强制缓存?
强制缓存是指只要浏览器判断缓存没有过期,就直接使用浏览器本地缓存,决定是否使用缓存的主动性在于浏览器这边。强缓存是利用HTTP响应头部字段实现的,
cache-control是一个相对时间
expires是一个绝对时间
如果两个字段都有,cache-control优先级高于expires。
什么是协商缓存?
304状态码,告诉浏览器可以使用本地缓存的资源,通过服务端告知客户端是否可以使用缓存的的方式被称为协商缓存。