在开发中使用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
吧~~