react-native fetch跨域请求返回的Response.ok==fase,但控制台已经显示能够获取到数据

在用 fetch API 实现跨域请求时,遇到这个问题,跨域请求是成功的,但是返回的 response 中 body 为 null ,response.ok==false,
图片描述

在chrome浏览器可以看到,返回的数据已经有了,
图片描述

我使用是fetch获取百度音乐API的,我写的代码如下:

var url="http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query=张碧晨"
fetch(url, {
    method: 'GET',
    mode: 'no-cors',
    cache: 'default'
}).then((res)=> res.json()).then((resData) => {
    console.log(resData);
})

这样打印出来的,显示有错误,不知道是什么问题?

阅读 7.3k
2 个回答

no-cors 的请求回来的结果 opaque response,是一种不透明 的响应结果,意味着你不能通过 response 获取。应该采用 cors 跨域请求模式,可以正常拿到请求结果,但是这种模式涉及到CORS,需要服务端支持 Access-Control-Allow-Origin 响应头。具体可参考MDN

之前我也遇到了这个问题,node构建都本地服务器访问远程服务器,出现问题,然后装了一个
Allow-Control-Allow-Origin: *
上面这个chrome插件解决的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题