即使请求成功,fetch的响应也是空的

时间:2016-07-10 21:45:32

标签: javascript cors cross-domain fetch-api

我正在尝试使用fetch函数在客户端Javascript代码中从服务器检索数据。我在Chrome中使用了名为whatwg-fetch的polyfill版本的fetch(支持内部提取)。

以下是我如何调用该函数:

//Called in a page loaded as http://localhost:3236/
fetch("http://localhost:8080/list", {
         mode: 'no-cors',
         credentials: "include", 
    })
    .then(function(response) {
        return response.json();
    });

正如您所看到的,我的应用服务器与我的资源服务器不同,因此我必须为CORS设置选项。问题是response没有内容:

{
    body: null,
    bodyUsed: false,
    headers: Headers,
    ok: false,
    status: 0,
    statusText: "",
    type: "opaque",
    url: "",
}

当我转向网络面板并找到发送的请求时,似乎状态为200且请求的数据一切正常。

如何找到问题所在?

1 个答案:

答案 0 :(得分:5)

线索在opaque键中。请求成功,但Chrome的CORS限制阻止您使用返回的数据。 no-cors选项是可疑的;如果您的服务器已正确配置为跨源请求,则不需要它。

N.B。如果您已正确配置所有内容但在本地测试客户端时遇到错误,则使用--disable-web-security标记启动Chrome可能就足够了。