在浏览器地址栏键入URL,按下回车之后经历的流程/常见状态码/get请求和post请求的区别/Cookie和Session的区别

面试常问一 在浏览器地址栏键入URL,按下回车之后经历的流程:
  • DNS解析(域名解析:域名到IP地址的转换过程):浏览器会根据URL逐层查询DNS服务器缓存解析URL中的域名所对应的IP地址(DNS缓存从今到远依次是浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,从哪个缓存查找到对应IP则直接返回不再查找后面的缓存
  • TCP连接 (找到IP地址和对应端口后与服务器建立TCP连接)(三次握手)
  • 浏览器发送HTTP请求
  • 服务器对浏览器请求做出响应并把对应带有html文本的HTTP响应报文发送给浏览器
  • 浏览器收到html并在浏览器解析进行渲染页面
  • 浏览器释放TCP连接(四次挥手)
    (最后一步和倒数第二步可以同时发生,哪一步在前没有要求)
面试常问二 HTTP常见状态码

(状态码由三位数字构成第一位表示状态码类型)

  • 五种可能的取值类型
  • 1xx:指示信息--表示请求已接收,继续处理
  • 2xx:成功--表示请求已被成功接收、理解、接受
  • 3xx:重定向--要完成请求必须进行更进一步的操作
  • 4xx:客户端错误--请求有语法错误或请求无法实现
  • 5xx:服务器端错误--服务器未能实现合法的请求

常见状态码
2000K:正常返回信息
301 永久重定向,302 临时重定向
400 Bad Request:客户端请求有语法错误,不能被服务器所理解
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate 报头域一起使用
403 Forbidden:服务器收到请求,但是拒绝提供服务eg:比如IP被禁了
404Not Found:请求资源不存在,eg,输入了错误的URL
500Internal Server Error:服务器发生不可预期的错误
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
521 :爬虫自己遇到的没有携带js执行返回的cookie

面试常问三 get请求和post请求的区别

从三个层面回答

  • Http报文层面:GET将请求信息放在URL,POST放在报文体中
  • 数据库层面:
    GET符合幂等性(幂等性:对数据库的一次操作和多次操作的结果是一致的)和安全性(安全性:对数据的操作没有改变数据库的数据)      (这时因为Get请求一般是做查询操作的)
    POST不符合幂等性和安全性(POST一般是作用在上一级url上的,每次请求都会添加一份新资源,因此不符合幂等)(POST一般是往数据提交数据改变数据库,不符合安全性)
  • 其他层面:
    Get请求携带参数有限,POST可以携带更多数据;
    GET可以被缓存、被存储(会保存在浏览器的浏览记录中,url可以保存为浏览器书签),而POST不行
面试常问四 Cookie和Session的区别

HTTP本身是无连接的,正常我们每次请求数据都要重新建立携带数据连接(如登录),但是这样相当麻烦,因此我们引入了某些机制让HTTP具备状态,其中两个便是cookie,session.

Cookie简介
  • Cookie是客户端的解决方案
  • 是由服务器发给客户端的特殊信息,以文本的形式存放在客户端
  • 客户端再次请求的时候,会把Cookie回发
  • 服务器接收到后,会解析Cookie生成与客户端相对应的内容
Session简介
  • Session是服务端的机制,服务器使用一种类似于散列表的结构在服务器保存信息。
  • 解析客户端请求并操作session id,按需保存状态信息

    当程序需要为某个客户端请求创建session,首先检查客户端请求李是否已经包含一个session id,如果已经包含则说明以前已经为这个客户端创建了一个session,服务器就按照这个session id从服务器把这个session检索出来使用.如果不包含session id,则为这个客户端创建一个session并生成session id,并把这个session id发送回客户端进行保存
Cookie和Session的区别
  • Cookie数据存放在客户的浏览器上,Session数据放在服务器上
  • Session相对于Cookie更安全
  • 若考虑减轻服务器负担,应当使用Cookie

你可能感兴趣的:(在浏览器地址栏键入URL,按下回车之后经历的流程/常见状态码/get请求和post请求的区别/Cookie和Session的区别)