- 内容简介
- 译者序
- 前言
- 第 1 章 安装配置新项目
- 第 2 章 Flexbox 布局介绍
- 第 3 章 用 React Native 开发一个应用
- 第 4 章 在 React Native 中使用导航
- 第 5 章 动画和滑动菜单
- 第 6 章 用 React Native 绘制 Canvas
- 第 7 章 使用 React Native 播放音频
- 第 8 章 你的第一个自定义视图
- 第 9 章 Flux 介绍
- 第 10 章 处理复杂的应用程序状态
- 第 11 章 使用 Node 来实现服务端 API
- 第 12 章 在 React Native 中使用文件上传
- 第 13 章 理解 JavaScript Promise
- 第 14 章 fetch 简介
- 第 15 章 在 iOS 中使用 SQLite
- 第 16 章 集成 Google Admob
- 第 17 章 React Native 组件国际化
- 附录 A React.js 快速介绍
- 附录 B Objective-C Primer
- 附录 C webpack 入门
响应类型
当我们发送 fetch 请求时,返回的 response.type 可能是“basic”、“cors”或“opaque”中的一种。这些类型可以告知我们资源从何而来,这样就能知道该如何处理响应对象。
当我们请求的是同一域下的资源时,响应返回的类型为“basic”,此时没有任何限制,我们可以查看响应中的任何数据。
如果请求的是跨域资源,那么会返回一个 CORS 类型的头部,并且响应类型为“cors”。这种类型跟上面的“basic”非常相似,只是它对响应头部的字段访问有限制,你只可以访问这些属性:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified 和 Pragma。
“opaque”类型的响应也是访问跨域资源的时候产生的,只是响应头不是 CORS 类型的响应头而已。如果是这种类型的响应,那么我们就不能读取返回的数据,也不能查看请求的状态码,这就意味着我们将无法确定请求是成功了还是失败了。目前在 fetch() 的实现中,无法请求跨域资源。
你可以为 fetch 请求定义 mode 属性,来保证只有符合条件的请求才会被处理。可以设置的 mode 属性值如下:
•“same-origin”只有请求同域下的资源才能成功,其他请求均被拒绝。
•“cors”允许请求同域或者跨域资源,但是跨域必须返回相应的跨域请求头部。
•“cors-with-forced-preflight”在发出实际请求前先做 preflight 检查。
•“no-cors”针对跨域资源做请求,但是不返回 CORS 的响应头,这是属于 opaque 类型的响应。如前文所述,目前还不能在 window 下使用。
在使用 mode 时,需要将 fetch 请求的第二个参数作为配置对象,并在其中配置具体的模式:
fetch('http://some-site.com/cors-enabled/some.json', {mode: 'cors '}) .then(function(response) { return response.text(); }) .then(function(text) { console.log('Request successful', text); }) .catch(function(error) { log('Request failed', error) });
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论