13

Sto usando npm 'isomorphic-fetch' per inviare richieste. Il problema che sto riscontrando è che non riesco a impostare il tipo di contenuto dell'intestazione della richiesta.Come impostare il tipo di contenuto dell'intestazione della richiesta quando si utilizza Fetch APi

Ho impostato un tipo di contenuto di applicazione/json, tuttavia l'intestazione della richiesta viene impostata su text/plain.

import 'isomorphic-fetch'; 

    sendRequest(url, method, body) { 
    const options = { 
     method: method, 
     headers:{'content-type': 'application/json'}, 
     mode: 'no-cors' 
    }; 

    options.body = JSON.stringify(body); 

    return fetch(url, options); 
    } 

Quando esamino la richiesta nel mio browser il tipo di contenuto è o:

content-type:text/plain;charset=UTF-8 

Qualcuno può spiegare perché non sono in grado di impostare questa proprietà?

risposta

10

ho trovato la risposta dopo aver letto il seguente articolo:

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Headers

Guardia

Dal momento che le intestazioni possono essere inviati con le richieste e ha ricevuto nelle risposte, e hanno varie limitazioni su quali informazioni possono e dovrebbe essere mutabile, gli oggetti di intestazione hanno una proprietà di guardia. Questo non è esposto al Web, ma influenza quali operazioni di mutazione sono consentite sull'oggetto Headers.

possibili valori di guardia sono:

  • none: di default.
  • request: guardia per oggetto intestazioni ottenuto da una richiesta (Request.headers).
  • request-no-cors: protezione per un oggetto di intestazione ottenuto da una richiesta creata con Request.modeno-cors.
  • response: guardia per un'intestazione ottenuta da una risposta (Response.headers).
  • immutable: Utilizzato principalmente per i ServiceWorkers; esegue il rendering di un oggetto di intestazione di sola lettura.

Nota: Non si può aggiungere o impostare un request custodito intestazioni Content-Length intestazione. Analogamente, l'inserimento di Set-Cookie in un'intestazione di risposta non è consentito: ai ServiceWorkers non è consentito impostare i cookie tramite risposte sintetizzate.

Quando la proprietà modalità di opzioni è impostata su No-cors i valori di intestazione di richiesta sono immutabili.

Invece ho impostato la proprietà mode su cors.

4

È necessario creare un oggetto intestazioni di recupero.

sendRequest(url, method, body) { 
    const options = { 
    method: method, 
    headers: new Headers({'content-type': 'application/json'}), 
    mode: 'no-cors' 
    }; 

    options.body = JSON.stringify(body); 

    return fetch(url, options); 
} 
+0

questa sintassi funziona va bene 'intestazioni: { "Content-Type": "application/json" },' –

+0

@RTS: questo non lo fa sembra funzionare se si includono le credenziali. – user2284570

Problemi correlati