响应状态= 0使用fetch polyfill with mode:'no-cors'

Rai*_*gey 8 javascript get http fetch-api

我正在使用fetch polyfill和'no-cors'模式并获得响应状态0.在开发人员工具中,我可以看到响应具有所请求的数据.

客户端代码:

const BASE_CONFIG = {
    credentials: 'include',
    mode: 'no-cors'
};

let checkStatus = (response) => {
    if (response.status >= 200 && response.status < 300) {
        return response;
    } else {
        var error = new Error(response.statusText);
        error.response = response;
        throw error;
    }
};

function GET(url, urlParams={}, config={}) {
    let requestConfig = {
        method: 'get'
    };
  
    Object.assign(requestConfig, BASE_CONFIG, config);
    return fetch(url, requestConfig)
            .then(checkStatus)
            .then(parseJSON);
}

GET('http://other.domain,{})
Run Code Online (Sandbox Code Playgroud)

Beckend nodejs(Express.js)简化的响应处理程序:

function getData(req, res) {
    var responseData = {data: 'test'};
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.writeHead(200, {"Content-Type": "application/json"});
    return res.end(JSON.stringify(responseData));
}
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?谢谢!

Jul*_*ier 2

我不知道您是否使用file:协议,但在这种情况下您可以获得响应状态 0。

Chrome 和 Firefox 的本机实现都不支持获取本地文件

请参阅:https ://github.com/github/fetch/pull/92#issuecomment-140665932

目前,不幸的是,文件和 ftp URL 仍作为读者的练习。如有疑问,请返回网络错误。

请参阅: https: //fetch.spec.whatwg.org/#basic-fetch(文件和 ftp 子部分)

  • 每当您使用“no-cors”时,它都会发回“不透明”响应,并且您无法获取 json。在这种情况下,不确定“no-cors”有什么用?任何人? (5认同)