美文网首页
自定义请求头引起预检请求

自定义请求头引起预检请求

作者: lihao_李浩 | 来源:发表于2019-04-08 16:06 被阅读0次

修正

Access-Control-Allow-Headers 一定不要设置为*在移动端会出现 预检请求不通过的状况,切记切记切记!!!

概念

什么是CORS?

跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求

一、自定义请求头跨域

Access to XMLHttpRequest at 'http://192.168.0.130:8001/api/test/test' from origin 'http://192.168.0.130:8002' has been blocked by CORS policy: Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response.

预检请求

与简单请求不同,“需预检的请求”要求必须首先使用 OPTIONS 方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求。"预检请求“的使用,可以避免跨域请求对服务器的用户数据产生未预期的影响。
当请求满足下述任一条件时,即应首先发送预检请求:

使用了下面任一 HTTP 方法:

  • PUT
  • DELETE
  • CONNECT
  • OPTIONS
  • TRACE
  • PATCH
    人为设置了对 CORS 安全的首部字段集合之外的其他首部字段。该集合为:
  • Accept
  • Accept-Language
  • Content-Language
  • Content-Type (需要注意额外的限制)
  • ...

也就是说 当你自定义了请求头,浏览器就会先发送预检请求,期望得到想要的Access-Control-Allow-Headers返回头

举个例子

下面是一个预检请求,因为我添加了两个自定义请求头:authorizationcustom

image.png

这是服务器给我们的返回头为:
请注意,因为返回头没有Access-Control-Allow-Headers 所以浏览器阻止了接下来的get请求

image.png
控制台:
image.png
Access to XMLHttpRequest at 'http://192.168.0.130:8001/api/test/test' from origin 'http://localhost:8002' has been blocked by CORS policy: Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response.
什么意思呢?意思就是说请求头是不被授权的,已被CORS策略阻止
CORS策略

正确的返回头:
这里填写的是被允许的自定义请求头


image.png

相关文章

  • 自定义请求头引起预检请求

    修正 Access-Control-Allow-Headers 一定不要设置为*在移动端会出现 预检请求不通过的状...

  • jwt验证时预检请求处理

    jwt验证问题:拦截器进行验证时,没有得到token都会预检不通过。 预检请求不会带参数,因此拦截器获取请求头的j...

  • 预检请求

    问题:每次发起请求,同一条url有两条请求第一条请求Method是OPTIONS请求,第二条请求Method才是实...

  • 非简单跨越请求

    当浏览器发现请求是跨越的时候,会先进行预检请求,之后才会进行第二次请求来获取数据。 1. 预检"请求用的请求方法是...

  • 3-3 CORS跨域限制以及预请求验证

    1、请求的时候增加请求头 2、预请求 查看预请求限制的文档: 3、预请求显示Header的demo 设置允许的请求...

  • 简单请求和非简单请求2

    简单请求和非简单请求2 1、OPTIONS预检命令操作 (1)后端服务增加预检命令缓存 如果每个postJson请...

  • 简单请求和预检请求

    参考链接:https://blog.csdn.net/qihoo_tech/article/details/100...

  • 关于浏览器预检(OPTIONS)请求

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

  • HTTP访问控制(CORS)

    简单请求 触发简单请求 某些请求不会触发 CORS 预检请求。本文称这样的请求为“简单请求”,请注意,该术语并不属...

  • 前端优化之网络请求。

    前端的网络请求的话包含,css,js,img的请求。也包含ajax发起的请求(简单请求和预检请求)。 资源请求 1...

网友评论

      本文标题:自定义请求头引起预检请求

      本文链接:https://www.haomeiwen.com/subject/ujfocqtx.html