1

Dies ist ein ROTATION Beispiel, das funktioniert gut:Wie mit application/x-www-form-urlencoded Header und URLSearchParams POST mit isomorph-Fetch

curl --request POST \ 
    --url <url> \ 
    --header 'authorization: Bearer <authorization token>' \ 
    --header 'content-type: application/x-www-form-urlencoded' \ 
    --data 'category=1&userId=<uuid>' 

Ich versuche, diese Anforderung isomorphic-fetch mit zu reproduzieren.

Ich habe dies versucht:

const searchParams = new URLSearchParams(); 
searchParams.set('category', category); 
searchParams.set('userId', userId); 

return fetch(`<url>`, {  
    method: 'POST', 
    headers: { 
    'Authorization: Bearer <authorization token>', 
    'Accept': 'application/json', 
    'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' 
    }, 
    body: searchParams 
})` 

Aber ich bekomme eine 411 Statuscode Fehlerreaktion (length required)

Mehr Infos über URLSearchParams und Fetch hier:

fetch documentation

fetch spec

Irgendwelche Vorschläge?

+1

Ich weiß nicht, über isomorphic- fetch, aber ich weiß über den Fetch-Standard, und es erfordert den Benutzer-Agent, den Content-Length-Header für diese Art von Anforderungen festzulegen. (Sie müssen den Content-Type auch nicht selbst einstellen, der User-Agent sollte sich auch darum kümmern.) – Anne

+0

Sie haben recht, ich glaube, ich war verwirrt, weil in der CURL-Anfrage kein 'Content- Länge' Header. Kannst du den Kommentar als Antwort schreiben? – rfc1484

Antwort

2

Angenommen, die Serverimplementierung ist korrekt, ist das Problem hier mit Isomorphic-Fetch (oder viel wahrscheinlicher, das zugrunde liegende GitHub WHATWG Fetch Polyfill) in dem es die Content-Length-Header nicht hinzufügen, wie es für Fixed erforderlich ist Längenkörper nach dem Fetch-Standard.

(Sie sollten auch in der Lage sein, den Content-Type-Header zu verzichten wie auch abgeleitet werden soll von der URLSearchParams durch die Implementierung der API-Objekt und das hinzugefügt.)

Verwandte Themen