Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP headers和HTTP request methods #7

Open
TieMuZhen opened this issue Nov 13, 2021 · 0 comments
Open

HTTP headers和HTTP request methods #7

TieMuZhen opened this issue Nov 13, 2021 · 0 comments
Labels

Comments

@TieMuZhen
Copy link
Owner

TieMuZhen commented Nov 13, 2021

HTTP request methods

image

idempotent(幂等性):就是用户对于同一操作发起的一次或者多次的结果是一致的,不会因为多次操作而产生不一样结果。
Cacheable(可缓存):浏览器可缓存的

  • HEAD方法:请求资源的头部信息, 并且这些头部与GET方法请求时返回的一致. 该请求方法的一个使用场景是在下载一个大文件前先获取其大小再决定是否要下载, 以此可以节约带宽资源.
  • OPTIONS方法:用于获取目的资源所支持的通信选项。在CORS中,可以使用OPTIONS方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。
  • PATCH方法:用于对资源进行部分修改。
  • PUT方法:使用请求中的负载创建或者替换目标资源。如果目标资源不存在,并且PUT方法成功创建了一份,那么源头服务器必须返回201 (Created)来通知客户端资源已创建。如果目标资源已经存在,并且依照请求中封装的表现形式成功进行了更新,那么,源头服务器必须返回200 (OK)或者204 (No Content)来表示请求的成功完成。
  • POST方法:发送数据给服务器。请求主体的类型由Content-Type首部指定。Content-Type常用类型有:application/x-www-form-urlencodedapplication/jsonmultipart/form-data
  • GET方法:请求指定的资源。使用 GET 的请求应该只用于获取数据
  • TRACE方法:实现沿通向目标资源的路径的消息环回(loop-back)测试 ,提供了一种实用的 debug 机制。最终接收者是指初始(origin)服务器,或者第一个接收到Max-Forwards值为0的请求的服务器。

区别

GET和POST

  • GET请求参数放在URL上,POST请求参数放在请求体里
  • GET请求参数长度有限制,POST请求参数长度可以非常大
  • POST请求相较于GET请求安全一点点,因为GET请求的参数在URL上,且有历史记录
  • GET请求能缓存,POST不能

PUT和PATCH

  • PUT是幂等的,而 PATCH不是幂等
  • PATCH方法用来更新局部资源,PUT是全部更新资源

PUT和POST

  • PUT是幂等的,而 POST不是幂等的。PUT调用一次与连续调用多次是等价的(即没有副作用),而连续调用多次POST方法可能会有副作用,比如将一个订单重复提交多次。

HTTP headers

响应头

Access-Control-Allow-Origin

Access-Control-Allow-Origin响应头指定了该响应的资源是否被允许与给定的origin共享。

Access-Control-Allow-Origin: <origin>

<origin>:指定一个可以访问资源的URI。当设置为'*'时,允许不需具备凭证(credentials)的请求有权限访问所有域的资源。

Access-Control-Allow-Credentials

允许客户端携带验证信息,例如cookies, authorization headersTLS client certificates。这样客户端在发起跨域请求的时候,就可以携带验证信息。

Access-Control-Allow-Methods

该字段必需,它的值是逗号分隔的一个字符串,表明服务器支持的所有跨域请求的方法。注意,返回的是所有支持的方法,而不单是浏览器请求的那个方法。这是为了避免多次"预检"请求。

Access-Control-Allow-Methods: POST, GET, OPTIONS

Access-Control-Allow-Headers

如果浏览器请求包括Access-Control-Request-Headers字段,则Access-Control-Allow-Headers字段是必需的。它也是一个逗号分隔的字符串,表明服务器支持的所有头信息字段,不限于浏览器在"预检"中请求的字段。简单首部,如 simple headersAcceptAccept-LanguaeContent-LanguageContent-Type它们始终是被支持的,不需要在这个首部特意列出。

Access-Control-Max-Age

该字段可选,用来指定本次预检请求的有效期,单位为秒。在此期间,不用发出另一条预检请求。

请求头

Access-Control-Request-Headers

该字段是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段

Access-Control-Request-Method

用来列出浏览器的CORS请求会用到哪些HTTP方法。

@TieMuZhen TieMuZhen added the HTTP label Nov 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant