http协议相关问题

浏览器输入URL按回车,背后经历了什么?

  1. 在浏览器地址栏中输入URL,先解析URL,判断URL地址是否合法
  2. 浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳转到步骤3.
    浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;
    操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使用系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);
    路由器缓存:若上述均失败,继续向ISP搜索。
  3. 在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址
  4. 浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手
  5. 握手成功后,浏览器向服务器发送http请求,请求数据包
  6. 服务器处理收到的请求,将数据返回至浏览器
  7. 浏览器收到http响应
  8. 浏览器解码响应,若响应可以换成,则存入缓存
  9. 浏览器发送请求获取嵌入在html中的资源(html,css,javascript,图片,音乐…),对于未知类型,会弹框
  10. 浏览器发送异步请求
  11. 页面全部渲染结束

GET和POST的区别
严格意义上的重大区别:
GET产生一个数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

w3schools答案(不严谨):
GET在浏览器回退是无害的,而POST会再次提交请求;
GET产生的URL地址可以被Bookmark,而POST不可以;
GET请求会被浏览器主动cache,而POST不会,除非主动设置;
GET请求只能进行url编码,而POST支持多编码方式;
GET请求参数会被完整保留在浏览器历史记录中,而POST中参数不会被保留;
GET请求在URL中传送的参数是有长度限制的,而POST没有;
对参数的类型,GET只接受ASCII字符,而POST没有限制;
GET比POST更不安全,因为参数直接暴漏在URL上,所以不能用来传递敏感信息;
反驳:POST参数放body部分,按F12也直接暴漏了,无安全性可言
GET参数通过URL传递,POST放在Request Body中。
反驳:POST请求也可以没有body,可以直接在url传递

cookies机制和session机制的区别
cookies数据保存在客户端,session数据保存在服务器端
cookies可以减轻服务器压力,但是不安全,容易进行cookie欺骗;
session较安全,但占用服务器资源

HTTP状态码

200 请求已成功,请求所希望的响应头或数据体将随此响应返回。
201 请求已被实现,而且有一个新的资源已经依据请求的需要而建立,且其URL已经随Location头信息返回。
202 服务器已接受请求,但尚未处理。
301 (永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
302 (临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置)请求者应应对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码;
304 (未修改)自从上次请求后,请求的网页没修改过。服务器返回此响应时,不会返回网页内容。
305 (使用代理)请求者只能使用代理访问请求的网页。若服务器返回此响应,还表示请求者应使用代理。
307 (临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
401 当前请求需用户验证。如果当前请求已经包含了Authorization证书,那么401响应代表着服务器验证已经拒绝了那些证书。
403 服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供帮助,而且这个请求也不应该被重复提交。
404 请求失败,请求所希望的资源未在服务器上发现。
500 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
501 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 由于临时的服务器维护或者过载,服务器无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

HTTP协议的请求方式
GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE,CONNECT

HTTP和HTTPS区别
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据也能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
区别:总的来说,HTTPS=SSL+HTTP
1.https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2.http是超文本传输协议,信息是明文传输;https是具有安全性的ssl加密传输协议。
3.http和https使用的是完全不同的连接方式,使用的端口不一样,前者是80,后者是443(默认端口,实际可修改)
4.http的连接很简单,是无状态的;https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

HTTP请求报文和响应报文格式
请求报文3部分:
1.请求行:包含请求方法、URL、HTTP版本信息
2.请求头部(headers)字段
3.请求内容实体(body
响应报文3部分:
1.状态行:包含HTTP版本、状态码、状态码的原因短语
2.响应头部(headers)字段
3.响应内容(body)实体

常见的POST提交数据方式
application/x-www-form-unlencoded
multipart/form-data
application/json
text/xml

什么是DNS?
域名解析服务,将主机名转换为IP地址

什么是http协议无状态协议?怎么解决http协议无状态协议?
1.无状态协议对应事务处理没有记忆能力。缺少状态意味着如果后续处理,需要前面的信息
2.无状态协议解决方法:通过Cookie,通过Session会话保留

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值