经历了一波秋招,整理了一部分面试题,也是趁这个机会再巩固一下知识点。(本来想把所有的知识点都写在一篇博客中,感觉太冗长了,不如一篇一篇的整洁。)

一、HTTP请求(主要从请求的方法类型、请求消息和响应消息、get和post的区别这几部分来说)

1、请求的方法:HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
                           HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

          其中,Get指从指定的资源获取数据(比如获取列表中的数据)

                     Post指向指定的资源提交要被处理的数据(如提交表单信息)

                     Head与 GET 相同,但只返回 HTTP 报头,不返回文档主体。

                     Put指上传指定的 URI 表示。

                     Delete指删除指定资源。

                     Options返回服务器支持的 HTTP 方法。

                     Connect把请求连接转换到透明的 TCP/IP 通道。

2、请求与响应。

1)请求由请求行、请求头、和请求数据组成。(请求头是那些由客户端发往服务端以便帮助服务端更好的满足客户端请求的头。)

             请求行写法是固定的,由三部分组成,第一部分是请求方法,第二部分是请求网址,第三部分是HTTP版本。如


GET www.cnblogs.com HTTP/1.1。


              Http请求可以包含3种HTTP头:1.请求头(request header)  2.普通头(general header)  3.实体头(entity header)

 通常来说,由于Get请求往往不包含内容实体,因此也不会有实体头。

             请求数据只在POST请求中存在,因为GET请求并不包含任何实体。

2)响应由状态行、响应头、响应正文组成。( HTTP响应头是那些描述HTTP响应本身的头)

              状态行由三部分组成,第一部分是HTTP版本,第二部分是响应状态码,第三部分是状态码的描述 。如


HTTP/1.1 200 OK。


               HTTP响应中包含的头包括1.响应头(response header) 2.普通头(general header) 3.实体头(entity header)。

               HTTP响应内容就是HTTP请求所请求的信息。这个信息可以是一个HTML,也可以是一个图片。

3)请求头和响应头:

a.请求头实例:(来自百度首页)

     

前端请求mysql 前端请求方式有哪些_响应头

其中,Accept是客户端能接受的资源类型。

          Accept-Encoding:是支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送。

         Accept-Language:是客户端能接受的语言类型。

         Connection:是维护客户端与服务端的连接方式。

         Cookie:是客户端暂存的服务端的信息。因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来                         的Cookie在请求中一并发送去过。

         Host:是连接的目标主机与端口号。

         Referer:表示浏览器所访问的前一个页面,可以认为是之前访问页面的链接将浏览器带到了当前页面。。

         User-Agent:是客户端版本号的名字,即浏览器的身份标识字符串。

还有一些常用的请求头(关于协商缓存,会和强制缓存一起在后边介绍):

          If-Modified-Since:允许在对应的资源未被修改的情况下返回304未修改。(协商缓存,与Last-Modified对应)

          If-None-Match:允许在对应的内容未被修改的情况下返回304未修改。(协商缓存,与Etag对应)

          If-Match:主要用于像 PUT 这样的方法中,仅当从用户上次更新某个资源后,该资源未被修改的情况下,才更新该资源。

          If-Range:如果该实体未被修改过,则向返回所缺少的那一个或多个部分。否则,返回整个新的实体。

          Origin:发起一个针对跨域资源共享的请求(该请求要求服务器在响应中加入一个Access-Control-Allow-Origin的消息头,表示访问控制所允许的来源)。

b.响应头实例:

前端请求mysql 前端请求方式有哪些_请求头_02

其中,

       Cache-Control(强制缓存字段):通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效                                                                   时间。其单位为秒。

      Connection:针对该连接所预期的选项。

      Content-Encoding:响应资源所使用的编码类型。

      Content-Length:响应消息体的长度,用8进制字节表示。

      Content-Type:当前内容的MIME类型

      Date:此条消息被发送时的日期和时间。

      Expires(强制缓存字段):指定一个日期/时间,超过该时间则认为此回应已经过期。

      Server:服务器的名称。

      Vary:告知下游的代理服务器,应当如何对以后的请求协议头进行匹配,以决定是否可使用已缓存的响应内容而不是重新从                   原服务器请求新的内容。

还有一些常用的响应头:

        WWW-Authenticate:表示在请求获取这个实体时应当使用的认证模式。

        Set-Cookie:设置HTTP cookie。

Last-Modified:所请求的对象的最后修改日期。

         Access-Control-Allow-Origin:指定哪些网站可以跨域源资源共享。

   Etag:对于某个资源的某个特定版本的一个标识符,通常是一个 消息散列。

c.请求头和响应头通用头部---General(通用头即可以包含在HTTP请求中,也可以包含在HTTP响应中。通用头的作用是描述HTTP协议本身。

前端请求mysql 前端请求方式有哪些_http_03

其中,Request URL是请求地址

           Request Method是请求方法

           Status Code是状态码

           Remote Address是请求的远程地址

           Referrer Policy是策略

3、Get和Post的区别:

 1)get把请求的数据放在url上,即HTTP协议头上;post把数据放在HTTP的请求体内。

           其中,get请求中以?分割URL和传输数据,参数之间以&相连。 (若发送空格,则转换为+;)

2)get提交的数据最大是2k;post理论上没有限制。实际上IIS4中最大量为80KB,IIS5中为100KB。

          其中,get发送的数据在原则上url长度无限制,限制实际上取决于浏览器,浏览器会限制url的长度。

3)get产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); 

post产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

4)GET请求只能进行url编码;POST支持多种编码方式。

5)GET在浏览器回退时是无害的;POST会再次提交请求。(get请求中的回退操作实际上浏览器会从之前的缓存中拿结果)