V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
NicholasNC
V2EX  ›  问与答

fetch API 跨域请求的返回的 response 中 body 为 null

  •  
  •   NicholasNC · 2016-07-22 11:02:53 +08:00 · 8626 次点击
    这是一个创建于 3058 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在用 fetch API 实现跨域请求时,遇到这个问题,跨域请求是成功的,但是返回的 response 中 body 为 null 。

    如果是同一个域名就没有问题,如下图

    也能读取请求的 json 文件内容,

    但,如果是跨域请求的话就会变成这样子:返回的 response 中 body 为 null

    并且完全读取不了 json 文件

    好像这位仁兄也遇到这种问题,不过还没有解决,不知道大家有没有同样经历?

    其实跨域请求可以请求到json文件,但是为什么response 中 body 为 null

    第 1 条附言  ·  2016-07-22 15:04:02 +08:00

    终于解决问题了:主要原因是我的服务器没有开启支持跨域访问,如下图所以:(当服务器开启了支持跨域访问就可以了)

    让Apache 和nginx支持跨域访问

    但关于Fetch API的 no-corscors 还是有点疑惑

    [翻译] 这个API很“迷人”——(新的Fetch API))中提到:

    这里说 no-cors是默认的? 并且里面说 no-cors js不能访问Response中的任意属性,这难道是造成下图的原因吗?

    4 条回复    2016-09-11 14:54:07 +08:00
    xxxyyy
        1
    xxxyyy  
       2016-07-22 11:34:38 +08:00 via Android
    你的 mode 都设成 no-cors ,还怎么跨呀!
    如果你对 fetch API 不熟,建议你看下 MDN 里的文档: https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch
    notgod
        2
    notgod  
       2016-07-22 11:44:39 +08:00
    趴窝了都 还真没跨过去 @xxxyyy 正解+1 cors vs no-cors
    NicholasNC
        3
    NicholasNC  
    OP
       2016-07-22 15:05:48 +08:00
    @xxxyyy @notgod 问题暂时是解决了,但对 Fetch 的 mode `no-cors` 和 `cors`的区别还是不是很懂,详细见附言。

    (*^__^*)
    pole1419
        4
    pole1419  
       2016-09-11 14:54:07 +08:00
    我也遇到这个情况,问题是要请求资源是第三方公开的 API ,自己没权限去设置人家的服务器允许跨域。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4837 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:00 · PVG 12:00 · LAX 20:00 · JFK 23:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.