看完这篇HTTP,跟面试官扯皮就没问题了 (9)

以 2xx 为开头的都表示请求成功响应。

状态码 含义
200   成功响应  
204   请求处理成功,但是没有资源可以返回  
206   对资源某一部分进行响应,由Content-Range 指定范围的实体内容。  

以 3xx 为开头的都表示需要进行附加操作以完成请求

状态码 含义
301   永久性重定向,该状态码表示请求的资源已经重新分配 URI,以后应该使用资源现有的 URI  
302   临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。  
303   该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。  
304   该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。  
307   临时重定向。该状态码与 302 Found 有着相同的含义。  

以 4xx 的响应结果表明客户端是发生错误的原因所在。

状态码 含义
400   该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。  
401   该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。  
403   该状态码表明对请求资源的访问被服务器拒绝了。  
404   该状态码表明服务器上无法找到请求的资源。  

以 5xx 为开头的响应标头都表示服务器本身发生错误

状态码 含义
500   该状态码表明服务器端在执行请求时发生了错误。  
503   该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。  

Access-Control-Allow-Origin

一个返回的 HTTP 标头可能会具有 Access-Control-Allow-Origin ,Access-Control-Allow-Origin 指定一个来源,它告诉浏览器允许该来源进行资源访问。 否则-对于没有凭据的请求 *通配符,告诉浏览器允许任何源访问资源。例如,要允许源 https://mozilla.org 的代码访问资源,可以指定:

Access-Control-Allow-Origin: https://mozilla.org Vary: Origin

如果服务器指定单个来源而不是 *通配符的话 ,则服务器还应在 Vary 响应标头中包含 Origin ,以向客户端指示 服务器响应将根据原始请求标头的值而有所不同。

Keep-Alive

上面我们提到,HTTP 报文标头会分为四种,这其实是按着上下文来分类的

还有一种分类是根据代理进行分类,根据代理会分为端到端头 和 逐跳标头

而 Keep-Alive 表示的是 Connection 非持续连接的存活时间,如下

Connection: Keep-Alive Keep-Alive: timeout=5, max=997

Keep-Alive 有两个参数,它们是以逗号分隔的参数列表,每个参数由一个标识符和一个由等号 = 分隔的值组成。

timeout:指示空闲连接必须保持打开状态的最短时间(以秒为单位)。

max:指示在关闭连接之前可以在此连接上发送的最大请求数。

上述 HTTP 代码的意思就是限制最大的超时时间是 5s 和 最大的连接请求是 997 个。

Server

服务器标头包含有关原始服务器用来处理请求的软件的信息。

应该避免使用过于冗长和详细的 Server 值,因为它们可能会泄露内部实施细节,这可能会使攻击者容易地发现并利用已知的安全漏洞。例如下面这种写法

Server: Apache/2.4.1 (Unix)

Set-Cookie

Cookie 又是另外一个领域的内容了,我们后面文章会说道 Cookie,这里需要记住 Cookie、Set-Cookie 和 Content-Disposition 等在其他 RFC 中定义的首部字段,它们不是属于 HTTP 1.1 的首部字段,但是使用率仍然很高。

Transfer-Encoding

首部字段 Transfer-Encoding 规定了传输报文主体时采用的编码方式。

Transfer-Encoding: chunked

HTTP /1.1 的传输编码方式仅对分块传输编码有效。

X-Frame-Options

HTTP 首部字段是可以自行扩展的。所以在 Web 服务器和浏览器的应用上,会出现各种非标准的首部字段。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyywpg.html