关于浏览器预检请求

发布 : 2019-04-14 分类 : 前端跨域 浏览 :

浏览器在什么情况下会发起options预检请求?

在非简单请求且跨域的情况下,浏览器会发起options预检请求。

关于简单请求和复杂请求:

1 简单请求

简单请求需满足以下两个条件
1) 请求方法是以下三种方法之一:

  • HEAD
  • GET
  • POST
    2) HTTP 的头信息不超出以下几种字段

  • Accept

  • Accept-Language
  • Content-Language
  • Last-Event-ID
  • Content-Type: 只限于 (application/x-www-form-urlencoded、multipart/form-data、text/plain)

2 复杂请求

非简单请求即是复杂请求

常见的复杂请求有:

1) 请求方法为 PUT 或 DELETE

2) Content-Type 字段类型为 application/json

3) 添加额外的http header 比如access_token

在跨域的情况下,非简单请求会先发起一次空body的OPTIONS请求,称为”预检”请求,用于向服务器请求权限信息,等预检请求被成功响应后,才发起真正的http请求。

浏览器的预检请求结果可以通过设置Access-Control-Max-Age进行缓存

如何解决跨域问题

请看我的另一篇文章: 如何解决前端跨域问题

本文作者 : Simple
原文链接 : https://simplecodecx.github.io/blog/20190414/76328cc8.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
留下足迹