在开发中使用fetch跨域中碰到的问题
Feb 14, 2017 00:00 · 410 words · 1 minute read
CORS(Cross-origin resource sharing) “跨域资源共享”
后端接口中,需要进行权限校验,分别放在了headers中的 authorization 与Content-Type中。
当进行跨域访问的时候,发现这两者都不见了。正常的头会因为跨域影响。
fetch.js 常见坑
- Fetch 请求默认是不带 cookie 的,需要设置 fetch(url, {credentials: ‘include’})
- 如果是
非简单请求跨域时使用了mode: 'cors',所有的头 都会加上Access-Control-xx。 - 请求方法是
put,或者Content-Type字段的类型是application/json都是非简单请求 - 如果是
简单请求, 其实在浏览器发出请求的时候,是不需要做多余操作的,浏览器发现这次跨源AJAX请求是简单请求,就自动在头信息之中,添加一个Origin字段。Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求。
最后说一句,去用axios吧~~