2015-09-29 10 views
6

Sto usando fetch polyfill con la modalità 'no-cors' e ottenendo lo stato di risposta 0. Negli strumenti di sviluppo posso vedere che la risposta ha i dati richiesti.Stato risposta = 0 utilizzando fetch polyfill con modalità: 'no-cors'

client codice lato:

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

gestore di risposta Beckend nodejs (Express.js) semplificato:

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

Qualche idea su cosa sto facendo male? Grazie!

risposta

1

Non so se si utilizza di file: protocollo, ma in questo caso è possibile ottenere lo stato della risposta 0.

Né implementazione nativa di Chrome né Firefox supporta il recupero file locali

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

Per ora, sfortunato come è, gli URL dei file e ftp sono lasciati come un exe rcise per il lettore. In caso di dubbio, restituire un errore di rete.

See: https://fetch.spec.whatwg.org/#basic-fetch (sezioni di file e ftp sub)

modalità
+5

Ogni volta che si usa 'no-cors', si restituisce una risposta 'opaca' e non si può arrivare a JSON. Non sei sicuro di cosa si usi 'no-cors', in tal caso? Chiunque? – morgs32

0

no-cors è solo per il contenuto CDN, come ad esempio gli script, CSS e immagine, non può essere utilizzato per ottenere i dati, response.status = 0 è giusto comportamento

Problemi correlati