使用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