HTTP协议(套题)

深圳市 2020-05-26 1626
选择题 填空题 问答题 编程题 试题难度
0 0 8 0 比较难
试题信息收集不易,转发请带上出处,不甚感谢!如果您对任何编程问题还有疑问,欢迎点击下方按钮向老师提问!
问答题
  • 1、cache-control (作为课外知识)
  • 网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。

    Expires 头部字段提供一个日期和时间,响应在该日期和时间后被认为失效。允许客户端在这个时间之前不去检查(发请求),等同max-age的效果。但是如果同时存在,则被Cache-Control的max-age覆盖。

    Expires = "Expires" ":" HTTP-date

    例如:

    Expires: Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式)

    如果把它设置为-1,则表示立即过期

    Expires 和 max-age 都可以用来指定文档的过期时间,但是二者有一些细微差别

    1. Expires在HTTP/1.0中已经定义,Cache-Control:max-age在HTTP/1.1中才有定义,为了向下兼容,仅使用max-age不够
    2. Expires指定一个绝对的过期时间(GMT格式),这么做会导致至少2个问题:
    3. 2.1 客户端和服务器时间不同步导致Expires的配置出现问题。
    4. 2.2 很容易在配置后忘记具体的过期时间,导致过期来临出现浪涌现象
    5. max-age 指定的是从文档被访问后的存活时间,这个时间是个相对值(比如:3600s),相对的是文档第一次被请求时服务器记录的Request_time(请求时间)
    6. Expires 指定的时间可以是相对文件的最后访问时间(Atime)或者修改时间(MTime),而max-age相对对的是文档的请求时间(Atime)
    7. 如果值为 no-cache,那么每次都会访问服务器。如果值为max-age,则在过期之前不会重复访问服务器。


  • 2、常见的HTTP状态码
  • 2XX:表示成功请求
    3XX:需要重定向,浏览器直接跳转
    4XX:客户端请求错误,如404
    5XX:服务器端错误
    • 100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
    • 200 OK 正常返回信息
    • 201 Created 请求成功并且服务器创建了新的资源
    • 202 Accepted 服务器已接受请求,但尚未处理
    • 301 Moved Permanently 请求的网页已永久移动到新位置。
    • 302 Found 临时性重定向。
    • 303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。
    • 304 Not Modified 自从上次请求后,请求的网页未修改过。
    • 400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
    • 401 Unauthorized 请求未授权。
    • 403 Forbidden 禁止访问。
    • 404 Not Found 找不到如何与 URI 相匹配的资源。
    • 500 Internal Server Error 最常见的服务器端错误。
    • 503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。


  • 3、为什么HTTPS比HTTP安全?
  • HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS。

    因为网络请求需要中间有很多的服务器路由器的转发。中间的节点都可能篡改信息,而如果使用HTTPS,密钥在你和终点站才有。https之所以比http安全,是因为他利用ssl/tls协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer传递等。保障了传输过程的安全性。

  • 4、HTTP无状态协议指的是什么?
  • HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

  • 5、从浏览器地址栏输入url到显示页面的步骤
    1. 查找浏览器缓存
    2. DNS解析、查找该域名对应的IP地址、重定向(301)、发出第二个GET请求
    3. 进行HTTP协议会话
    4. 客户端发送报头(请求报头)
    5. 服务器回馈报头(响应报头)
    6. html文档开始下载
    7. 文档树建立,根据标记请求所需指定MIME类型的文件
    8. 文件显示

    浏览器这边做的工作大致分为以下几步:

    • 加载:根据请求的URL进行域名解析,向服务器发起请求,接收文件(HTML、JS、CSS、图象等)。
    • 解析:对加载到的资源(HTML、JS、CSS等)进行语法解析,建议相应的内部数据结构(比如HTML的DOM树,JS的(对象)属性表,CSS的样式规则等等)


  • 6、HTTP request报文结构是怎样的
  • 1、请求行

    请求方法,请求URI,协议版本,CRLF


    2、请求头

    请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等


    3、请求正文

    请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

    name=qiu&age=25
    



    GET /Protocols/rfc2616/rfc2616-sec5.html HTTP/1.1
    Host: www.w3.org
    Connection: keep-alive
    Cache-Control: max-age=0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
    Referer: https://www.google.com.hk/
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
    Cookie: authorstyle=yes
    If-None-Match: "2cc8-3e3073913b100"
    If-Modified-Since: Wed, 01 Sep 2004 13:24:52 GMT
    
    name=qiu&age=25
    
  • 7、Http协议中有那些请求方式?
    • GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
    • POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
    • PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
    • HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
    • DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
    • OPTIONS:查询相应URI支持的HTTP方法。


  • 8、get 和 post区别
  • 区别:

    get请求无消息体,只能携带少量数据

    post请求有消息体,可以携带大量数据

    携带数据的方式:

    get请求将数据放在url地址中

      post请求将数据放在消息体中

    GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中; 

    GET方式提交的数据最多只能有1024字节,而POST则没有此限制。 

还能输入{{limitInput-companyComment.length}}个字符