zoukankan      html  css  js  c++  java
  • http面试准备

    从http的角度深入分析一次web请求:

    1.在浏览器输入一个url地址如www.baidu.com

    2.请求DNS把这个域名解析成对应的IP地址(DNS域名解析过程看上篇博客)

    3.根据这个IP地址与默认端口80与远程服务器建立Socket连接,然后浏览器根据这个url组装成一个get类型的http请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read将数据返回,最后断开这个连接

    http本身的特点:

    http采用无状态的短连接的通信方式。通常情况下,一次请求就完成了一次数据交互,通常也对应一个业务逻辑,然后这次通信连接就断开了。
    采用这种方式主要是为了能够同时服务于更多的用户,因为当前互联网每天都会处理上亿的用户请求,不可能每个用户访问一次后就一直保持这个连接

      引申:什么是http协议无状态协议?如何解决无状态协议?

      无状态协议对于事务处理没有记忆能力。比如A发送一个http请求完成之后,在发送一次客户端不知道他还是A用户

      解决:可以使用会话技术,如cookie,session,相当于一个通行证一样,第一次访问给A用户发送一个通行证,之后便知道是A用户了,再引申问你cookie的缺点

    剩下的都是一些经典问题:

    别人写的这两篇博客讲的比较详细

    https://blog.csdn.net/zhangliangzi/article/details/51336564

    https://juejin.im/post/5a8102e0f265da4e710f5910

    1.常见的http方法有哪些?

    2.get与post方法的区别?

    3.常见的http状态码?

    4.HTTP请求报文与响应报文的格式?

    5.HTTP1.1版本新特性?

    6.HTTP的缺点与HTTPS?

     关于get请求与post请求:

    网上查找到的与自己试验之后得到的结果一般是

    1.get去服务器获取资源,参数在url地址栏后面,传输的数据量小,不同的浏览器对ur长度有限制,没有Post安全,只支持ASCII字符

    2.post.....

    上述是比较浅显的,看了有篇文章之后,别人做了深入了解,http是应用层协议,它还是基于ip/tcp协议的,get/post只是http发送数据的两种格式,get/post能做的事情都是一样的,你要给get带上request body,给post带上url参数,技术上是完全行的通的。这是一个行为规范,不按规范走让人觉得傻乎乎的。

    get/post本质上就是TCP连接,并无差别。但是由于http的规定和浏览器服务器的限制,导致在应用过程中体现的不同

    真相是:他们之间的重大区别:详情参考原文:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3833d9ca20b9f7dcd9d33e4#rd

    GET产生一个TCP数据包;POST产生两个TCP数据包

  • 相关阅读:
    【bzoj1408】 Noi2002—Robot
    【bzoj3884】 上帝与集合的正确用法
    【bzoj2190】 SDOI2008—仪仗队
    【uoj264】 NOIP2016—蚯蚓
    【uoj262】 NOIP2016—换教室
    【uoj261】 NOIP2016—天天爱跑步
    python sort 和sorted排序
    mkdir: cannot create directory ‘/soft/hadoop-2.7.3/logs’: Permission denied问题
    RuntimeError: implement_array_function method already has a docstring
    flask 的orm
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/10750483.html
Copyright © 2011-2022 走看看