13

Ich verwende npm 'isomorphic-fetch', um Anforderungen zu senden. Das Problem, das ich erfahre, ist, dass ich den Inhaltstyp des Anforderungsheaders nicht festlegen kann.So legen Sie den Inhaltstyp des Anforderungsheaders fest, wenn Fetch APi verwendet wird

Ich legte einen Inhaltstyp der Anwendung/JSON, aber die Anfrage Header werden auf Text/plain gesetzt.

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

Als ich die Anfrage in meinem Browser untersuchen ist der Inhaltstyp o:

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

Kann mir jemand erklären, warum ich nicht in der Lage bin diese Eigenschaft einzustellen?

Antwort

10

fand ich die Antwort nach dem folgenden Artikel zu lesen:

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

Wache

Da Header können in Anfragen und empfangen Antworten gesendet werden, und haben verschiedene Beschränkungen über welche Informationen und sollte veränderbar sein, Header-Objekte haben eine Schutz-Eigenschaft. Dies ist dem Web nicht zugänglich, aber es beeinflusst, welche Mutationsoperationen für das Header-Objekt zulässig sind.

Mögliche Schutzwerte sind:

  • none: default.
  • request: Schutz für ein Header-Objekt aus einer Anfrage (Request.headers).
  • request-no-cors: Schutz für ein Header-Objekt, das von einer mit Request.modeno-cors erstellten Anforderung erhalten wurde.
  • response: Schutz für einen Header erhalten von einer Antwort (Response.headers).
  • immutable: Meistens für ServiceWorker verwendet; Rendert ein Header-Objekt schreibgeschützt.

Hinweis: Sie dürfen keine request bewacht Headers’ Content-Length Header anhängen oder setzen. Ebenso ist das Einfügen von Set-Cookie in einen Antwortheader nicht zulässig: ServiceWorkers dürfen Cookies nicht über synthetisierte Antworten setzen.

Wenn die Optionen Modus Eigenschaft auf No-cors die Request-Header gesetzt Werte sind unveränderlich.

Stattdessen legte ich die Mode-Eigenschaft auf Kors.

4

Sie müssen ein Abruf-Header-Objekt erstellen.

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

diese Syntax funktioniert in Ordnung 'Header: { "Content-Type": "application/json" }' –

+0

@RTS: tut dies scheint nicht zu funktionieren, wenn Sie die Anmeldeinformationen umfassen. – user2284570

Verwandte Themen