13

Używam npm "isomorphic-fetch" do wysyłania żądań. Problem, którego doświadczam, polega na tym, że nie mogę ustawić typu zawartości nagłówka żądania.Jak ustawić typ zawartości nagłówka żądania podczas korzystania z funkcji pobierania APi

Ustawiam typ zawartości aplikacji/json, jednak nagłówek żądania jest ustawiony na tekst/zwykły.

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

Kiedy rozpatruje wniosek w przeglądarce typ zawartości jest o:

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

Czy ktoś może wyjaśnić, dlaczego nie jestem w stanie ustawić tę właściwość?

Odpowiedz

10

znalazłem odpowiedź po przeczytaniu poniższego artykułu:

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

Gwardię

Ponieważ nagłówki mogą być wysyłane w żądaniach i otrzymał w odpowiedzi, i mają różne ograniczenia, jakie informacje mogą i powinny być zmienne, obiekty nagłówków mają właściwość strażnika. Nie jest to narażone na działanie sieci, ale ma wpływ na to, które operacje mutacji są dozwolone w obiekcie nagłówków.

Możliwe wartości ochronne są:

  • none: default.
  • request: ochrona obiektu nagłówkowego uzyskanego na żądanie (Request.headers).
  • request-no-cors: ochrona obiektu nagłówkowego uzyskanego na żądanie utworzone za pomocą Request.modeno-cors.
  • response: ochrona dla nagłówków uzyskanych z odpowiedzi (Response.headers).
  • immutable: najczęściej używany dla ServiceWorkers; renderuje obiekt nagłówków tylko do odczytu.

Uwaga: Nie można dołączyć lub ustawić Content-Length nagłówku request strzeżonym nagłówków. Podobnie wstawianie Set-Cookie do nagłówka odpowiedzi jest niedozwolone: ​​ServiceWorkers nie mogą ustawiać plików cookie za pomocą syntezowanych odpowiedzi.

Gdy właściwość tryb opcji jest ustawiona na NIE-Cors wartości nagłówka żądania są niezmienne.

Zamiast tego ustawiam właściwość mode na cors.

4

Musisz utworzyć obiekt nagłówków pobierania.

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

ta składnia działa okay 'nagłówki: { "Content-Type": "application/json" }' –

+0

@RTS: to nie wydaje się działać, jeśli zawierają poświadczeń. – user2284570

Powiązane problemy