For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
http的学习与应用是每一位web前端开发程序员都需要熟练掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,http入门需要掌握哪些知识。
HTTP状态码301和302的区别?
301:(永久性转移)请求的网页已被永久移动到新位置。服务器返回此响应时,会自动将请求者转到新位置。
302:(暂时性转移)服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。此代码与响应GET和HEAD请求的301代码类似,会自动将请求者转到不同的位置。
举个形象的例子:当一个网站或者网页24—48小时内临时移动到一个新的位置,这时候就要进行302跳转,打个比方说,我有一套房子,但是近走亲戚去亲戚家住了,过两天我还回来的。而使用301跳转的场景就是之前的网站因为某种原因需要移除掉,然后要到新的地址访问,是永久性的,就比如你的那套房子其实是租的,现在租期到了,你又在另一个地方找到了房子,之前租的房子不住了。
POST和GET的区别?
GET和POST本质的区别是规范上的区别,在规范中,定义GET请求是用来获取资源的,也就是进行查询操作的,而POST请求是用来传输实体对象的,因此会使用POST来进行添加、修改和删除等操作。
GET请求参数通过URL传递,POST的参数放在请求体中。
GET请求可以直接进行回退和刷新,不会对用户和程序产生任何影响;而POST请求如果直接回滚和刷新将会把数据再次提交。
GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把请求头和请求体一并发送出去;而对于POST,浏览器先发送请求头,服务器响应100continue,浏览器再发送请求体。
GET请求一般会被缓存,比如常见的CSS、JS、HTML请求等都会被缓存;而POST请求默认是不进行缓存的。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
URI和URL的区别
URI,全称是UniformResourceIdentifier),中文翻译是统一资源标志符,主要作用是标识一个资源。
URL,全称是UniformResourceLocation),中文翻译是统一资源定位符,主要作用是提供资源的路径。打个比喻吧,URI像是身份证,可以标识一个人,而URL更像一个住址,可以通过URL找到这个人。
如何理解HTTP协议是无状态的
当浏览器一次发送请求给服务器时,服务器响应了;如果同个浏览器发起二次请求给服务器时,它还是会响应,但是呢,服务器不知道你就是刚才的那个浏览器。简言之,服务器不会去记住你是谁,所以是无状态协议。
HTTP长连接和短连接?
HTTP短连接:浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。HTTP1.0默认使用的是短连接。
HTTP长连接:指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,这就节省了TCP连接建立和断开的消耗。
HTTP/1.1起,默认使用长连接。要使用长连接,客户端和服务器的HTTP部的Connection都要设置为keep-alive,才能支持长连接。
HTTP如何实现长连接?
HTTP分为长连接和短连接,本质上说的是TCP的长短连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才具有真正的长连接和短连接这一说法哈。
TCP长连接可以复用一个TCP连接,来发起多次的HTTP请求,这样就可以减少资源消耗,比如一次请求HTML,如果是短连接的话,可能还需要请求后续的JS/CSS。
如何设置长连接?
通过在头部(请求和响应头)设置Connection字段指定为keep-alive,HTTP/1.0协议支持,但是是默认关闭的,从HTTP/1.1以后,连接默认都是长连接。
HTTP长连接在什么时候会超时?
HTTP一般会有httpd守护进程,里面可以设置keep-alivetimeout,当tcp连接闲置超过这个时间就会关闭,也可以在HTTP的header里面设置超时时间。
TCP的keep-alive包含三个参数,支持在系统内核的net.ipv4里面设置;当TCP连接之后,闲置了tcp_keepalive_time,则会发生侦测包,如果没有收到对方的ACK,那么会每隔tcp_keepalive_intvl再发一次,直到发送了tcp_keepalive_probes,就会丢弃该连接。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。