使用cors解决跨域遇到浏览器发出options嗅探

前言: 本地开发起的服务器,通过修改hosts文件设置域名映射到本地,接口在测试环境

1. 服务器端设置cors, 配置access-control-allow-origin 头部

 

使用蚂蚁金服的upload组件时发现错误,network中可以看到有一个options请求,而本人实际上并没有使用options的习惯

查看antdesign文档上的upload, 发现发出了两次请求,第一个是options,第二个才是上传的post请求

 

查看相关文档发现, options请求是浏览器行为,

使用cors解决跨域时,如果是非标准cors,  比如使用 DELETE , PUT 等方法, 设置非常规的请求头部(比如使用jwp, 在header中传递token进行身份验证),上传文件等, 浏览器会先发出一次options请求,该请求不会带任何参数(包括设置的头部,cookie等), 等待服务器端返回200, 才会发出正常的请求

 

遗留问题:

  1. 如果设置头部, 应该每次请求都会先发出options请求, 然而有些接口却没有发出

  2. 有些get请求,在浏览器network中看是options,  而实际上服务器接收的get, 能正常操作

 

 

参考: https://my.oschina.net/tridays/blog/758994

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

posted @ 2018-08-31 16:41  她在村口等我  阅读(1548)  评论(0编辑  收藏  举报