HTTP协议、cookies、请求方式及较全状态返回码

https://developer.mozilla.org/zh-CN/docs/Web/HTTP

HTTP:HyperText Transfer Protocol,超文本传输协议,属于网络层协议。

HTTP cookies

        HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。   

  Cookie主要用于以下三个方面:

  •  会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等)

HTTP请求方式

      HTTP请求方式有9种:  GET 、POST、PUT、HEAD、CONNECT、DELETE、OPTIONS、TRACE以及PATCH。

      GET:请求指定的页面信息,并返回实体主体,请求的参数等信息都会裸露在URL中;

      POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体(body)中。POST请求可能会导致新的资源的建立和/或已有资源的修改;

      PUT:从客户端向服务器传送的数据取代指定的文档的内容,即更新内容;

      HEAD:与GET请求类似,但不返回具体内容,只返回报头;

      CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器;

      DELETE:请求服务器删除指定页面;

      OPTIONS:允许客户端查看服务器的性能;

      TRACE:实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制;

     PATCH:用于对资源进行部分修改,是一个新的HTTP请求方法;要判断一台服务器是否支持  PATCH 方法,那么就看它是否将其添加到了响应首部 Allow 或者 Access-Control-Allow-Methods (在跨域访问的场合,CORS)的方法列表中,或者, Accept-Patch 首部的出现,这个首部明确了服务器端可以接受的补丁文件的格式。

   GET与POST请求的区别是:

         1)GET把请求的报文都存放到URL中,明文裸露在网络上,如果参数很多,不建议用get请求,因为get最多支持1024个字符;

         2)POST把请求报文、参数存放在消息体(body)中,好处是,不管参数有多少,都能正常正确请求。

 

HTTP常见返回码  

100 Continue 信息型状态响应码表示目前为止一切正常, 客户端应该继续请求, 如果已完成请求则忽略. 
101 Switching Protocol(协议切换)状态码表示服务器应客户端升级协议的请求(Upgrade请求头)正在进行协议切换。
200 OK 表明请求已经成功. 默认情况下状态码为200的响应可以被缓存;
    不同请求方式对于请求成功的意义如下:
    
    GET: 已经取得资源,并将资源添加到响应的消息体中。
    HEAD: 响应的消息体为头部信息。
    POST: 响应的消息体中包含此次请求的结果。
    TRACE: 响应的消息体中包含服务器接收到的请求信息。
201 Created 是一个代表成功的应答状态码,表示请求已经被成功处理,并且创建了新的资源。新的资源在应答返回之前已经被创建。同时新增的资源会在应答消息体中返回,其地址或者是原始请求的路径,或者是 Location 首部的值。
202 Accepted 表示服务器端已经收到请求消息,但是尚未进行处理。但是对于请求的处理确实无保证的,即稍后无法通过 HTTP 协议给客户端发送一个异步请求来告知其请求的处理结果。这个状态码被设计用来将请求交由另外一个进程或者服务器来进行处理,或者是对请求进行批处理的情形。
203 Non-Authoritative Information  表示请求已经成功被响应,但是获得的负载与源头服务器的状态码为 200 (OK)的响应相比,经过了拥有转换功能的 proxy (代理服务器)的修改。
204 No Content成功状态响应码表示目前请求成功,但客户端不需要更新其现有页面。204响应默认是可以被缓存的。
在响应中需要包含头信息ETag。使用惯例是,在 PUT 请求中进行资源更新,但是不需要改变当前展示给用户的页面,那么返回 204 No Content。
205 Reset Content 用来通知客户端重置文档视图,比如清空表单内容、重置 canvas 状态或者刷新用户界面。
206 Partial Content 成功状态响应代码表示请求已成功,并且主体包含所请求的数据区间,该数据区间是在请求的 Range 首部指定的。

3开头的状态响应码都属于重定向问题
300 Multiple Choices 是一个用来表示重定向的响应状态码,表示该请求拥有多种可能的响应。
301 Moved Permanently 永久重定向 说明请求的资源已经被移动到了由 Location 头部指定的url上,是固定的不会再改变。搜索引擎会根据该响应修正。
302 Found 重定向状态码表明请求的资源被暂时的移动到了由Location 头部指定的 URL 上。
303 See Other 重定向状态码,通常作为 PUT 或 POST 操作的返回结果,它表示重定向链接指向的不是新上传的资源,而是另外一个页面,比如消息确认页面或上传进度页面。而请求重定向页面的方法要总是使用 GET。
304 Not Modified  未改变说明无需再次传输请求的内容,也就是说可以使用缓存的内容。
307 Temporary Redirect(临时重定向)是表示重定向的响应状态码,说明请求的资源暂时地被移动到  Location 首部所指向的 URL 上。
308 Permanent Redirect(永久重定向)是表示重定向的响应状态码,说明请求的资源已经被永久的移动到了由 Location 首部指定的 URL 上。浏览器会进行重定向,同时搜索引擎也会更新其链接。
    在重定向过程中,请求方法和消息主体不会发生改变,然而在返回 301 状态码的情况下,请求方法有时候会被客户端错误地修改为 GET 方法。

4开头的状态响应码都属于客户端错误    
400 Bad Request 响应状态码表示由于语法无效,服务器无法理解该请求。 客户端不应该在未经修改的情况下重复此请求。
401 Unauthorized 指的是由于缺乏目标资源要求的身份验证凭证,发送的请求未得到满足。
403 Forbidden 指的是服务器端有能力处理该请求,但是拒绝授权访问。
404 Not Found 指的是服务器端无法找到所请求的资源。
405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。需要注意的是,GET 与 HEAD 两个方法不得被禁止,当然也不得返回状态码 405。
406 Not Acceptable 指代服务器端无法提供与  Accept-Charset 以及 Accept-Language 消息头指定的值相匹配的响应。
407 Proxy Authentication Required 指的是由于缺乏位于浏览器与可以访问所请求资源的服务器之间的代理服务器(proxy server )要求的身份验证凭证,发送的请求尚未得到满足。
408 Request Timeout 表示服务器想要将没有在使用的连接关闭。一些服务器会在空闲连接上发送此信息,即便是在客户端没有发送任何请求的情况下。
409 Conflict 表示请求与服务器端目标资源的当前状态相冲突。冲突最有可能发生在对 PUT 请求的响应中。例如,当上传文件的版本比服务器上已存在的要旧,从而导致版本冲突的时候,那么就有可能收到状态码为 409 的响应。
410 丢失 说明请求的内容在服务器上不存在了,同时是永久性的丢失。如果不清楚是否为永久或临时的丢失,应该使用404。
411 Length Required  表示由于缺少确定的Content-Length 首部字段,服务器拒绝客户端的请求。
412 Precondition Failed(先决条件失败)对于目标资源的访问请求被拒绝。请求的操作——通常是上传或修改文件——无法执行,从而返回该错误状态码。
413 Payload Too Large 表示请求主体的大小超过了服务器愿意或有能力处理的限度,服务器可能会(may)关闭连接以防止客户端继续发送该请求。
414 URI Too Long 表示客户端所请求的 URI 超过了服务器允许的范围。
415 Unsupported Media Type 服务器由于不支持其有效载荷的格式,从而拒绝接受客户端的请求。
416 Range Not Satisfiable 错误状态码意味着服务器无法处理所请求的数据区间。
417 Expectation Failed 指服务器无法满足 Expect 请求消息头中的期望条件。
418 I'm a teapot 客户端错误响应代码表示服务器拒绝冲泡咖啡,因为它是一个茶壶。 这个错误是超文本咖啡壶控制协议的参考,这是1998年愚人节的笑话。
422 Unprocessable Entity 指的是服务器理解请求实体的内容类型,并且请求实体的语法是正确的,但服务器不能处理所包含的指令。
425 Too Early 代表服务器不愿意冒风险来处理该请求,原因是处理该请求可能会被“重放”,从而造成潜在的重放攻击。
426 Upgrade Required 表示服务器拒绝处理客户端使用当前协议发送的请求,但是可以接受其使用升级后的协议发送的请求。
428 Precondition Required 表示服务器端要求发送条件请求。
429 Too Many Requests 表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”。
431 Request Header Fields Too Large 表示由于请求中的首部字段的值过大,服务器拒绝接受客户端的请求。客户端可以在缩减首部字段的体积后再次发送请求。
451 Unavailable For Legal Reasons (因法律原因不可用)是一种HTTP协议的错误状态代码,表示服务器由于法律原因,无法提供客户端请求的资源,例如可能会导致法律诉讼的页面。

5开头的响应状态码都是服务器端问题
500 Internal Server Error 意味着所请求的服务器遇到意外的情况并阻止其执行请求。
501 Not Implemented 表示请求的方法不被服务器支持。
502 Bad Gateway 表示作为网关或代理角色的服务器,从上游服务器(如tomcat、php-fpm)中接收到的响应是无效的。
503 Service Unavailable 表示服务器尚未处于可以接受请求的状态,通常造成这种情况的原因是由于服务器停机维护或者已超载。
504 Gateway Timeout 表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应。
505 HTTP Version Not Supported 表示服务器不支持请求所使用的 HTTP 版本。
511 Network Authentication Required 表示客户端需要通过验证才能使用该网络。该状态码不是由源头服务器生成的,而是由控制网络访问的拦截代理服务器生成的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值