8

「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,{})

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));
}

私が間違っていることは何か分かりますか?ありがとう!

4

2 に答える 2

2

file:プロトコルを使用しているかどうかはわかりませんが、この場合は応答ステータス 0 を取得できます。

Chrome も Firefox のネイティブ実装も、ローカル ファイルのフェッチをサポートしていません

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

今のところ、残念なことに、ファイルと ftp の URL は読者の演習として残されています。疑わしい場合は、ネットワーク エラーを返します。

参照: https://fetch.spec.whatwg.org/#basic-fetch (ファイルおよび ftp サブセクション)

于 2015-12-28T22:31:20.603 に答える