Fork me on GitHub

fetch

fetch

1
2
3
fetch('/url/',{method:'GET'})
.then(response => response.json())
.then(json => this.setState({data:json}))

poiyfill

fetch是基于Promise设计的,所以不兼容 IE8及以下
可以下载 isomorphic-fetch和whatwg-fetch

jsonp

fetch不支持jsonp
可以用 fetch-jsonp 

npm install fetch-jsonp --save-dev
fetchJsonp('/users.jsonp', {
    timeout: 3000,
    jsonpCallback: 'custom_callback'
  })
  .then(function(response) {
    return response.json()
  }).catch(function(ex) {
    console.log('parsing failed', ex)
  })

跨域

fetch的mode有3个值
same=>该模式是不允许跨域的,它需要遵守同源策略,否则浏览器会返回一个error告知不能跨域;其对应的response type为basic。

cors: 该模式支持跨域请求,顾名思义它是以CORS的形式跨域;当然该模式也可以同域请求不需要后端额外的CORS支持;其对应的response type为cors。

no-cors: 该模式用于跨域请求但是服务器不带CORS响应头,也就是服务端不支持CORS;这也是fetch的特殊跨域请求方式;其对应的response type为opaque。 
// 后台可以看到数据,但是访问不到内容 => 该模式允许浏览器发送本次跨域请求,但是不能访问响应返回的内容,这也是其response type为opaque透明的原因。
proxy 重定向
可以 在package.json里添加
"proxy": {
  "/api": {
    "target": "http://localhost:4000",
    "secure": false
  }
}
-------------本文结束感谢您的阅读-------------