预检请求_

只有复杂请求才发送预检请求。

非简单请求是复杂请求。
简单请求只有:

  1. 只可能有GET + POST +HEAD三种请求类型。而且必须满足下面的2和3两个特征,(POST请求也不全是简单请求,后面有例子)
  2. 不能有自定义头字段 ,只能有以下几种:
    1. Accept
    2. Accept-Language
    3. Content-Type
    4. Content-Language
  3. Content-Type的值只能是以下三种:
    1. text/plain
    2. multipart/form-data 上传文件用的
    3. application/x-www-form-urlencoded 表单提交的数据类型,一般的post请求的数据类型
      除此之外都是复杂请求。

复杂请求会先发送一个预检请求,方法为OPTIONS,只包含头部信息,不包含请求体,单独一个包发给服务器。包含如下字段:
Origin: 发送请求的页面的源
Access-Control-Request-Methods: 请求希望使用的方法
Access-Control-Request-Headers: (可选)要使用的逗号分隔的自定义头部列表
例如:
Origin: http://www.nczonline.net
Access-Control-Request-Methods: POST
Access-Control-Request-Headers: NCZ, GGG
服务器拿到之后,可以确定是否允许这种类型的请求,然后在响应中发送如下头部信息(不发送响应体):
Access-Control-Allow-Origin: http://www.nczonline.net
Access-Control-Allow-Methods: POST, GET
Access-Control-Allow-Headers: NCZ, GGG
Access-Control-Max-Age: 172800 // 这是缓存预检请求的秒数
缓存有效期内不会再次发送预检请求。
这个OPTIONS请求的响应状态为200时,才会继续发送真正的请求。
预检请求,方法为OPTIONS
在这里插入图片描述预检请求没有请求体
在这里插入图片描述预检请求没有响应体
在这里插入图片描述正式的复杂请求(这里是POST)有请求体
因为Content-Type的值为application/json,以及有一些头字段不复合简单请求的要求,这个POST请求是个复杂请求。
在这里插入图片描述有请求体
在这里插入图片描述有响应体
在这里插入图片描述预检请求就是试探一下服务器那边是否允许自己发请求。
如果被拒绝了就不请求了,节省资源。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值