Is there a way to send an HTTP request with fetch()
and tell it to not automatically set a header? I'm trying to get it to send a request without a Content-Type
, I can get it to send an empty header
Content-Type:
like this
fetch('http://localhost:8000/', {
method: 'POST',
headers: {
'Content-Type': ''
},
body: 'some data'
});
but can I get it to not include the line at all?
Per step 36 of https://fetch.spec.whatwg.org/#dom-request and https://fetch.spec.whatwg.org/#concept-bodyinit-extract, a fetch
-initiated request with a request body will always end up with a Content-Type
header — because there are only two possible paths a request with a request body can take in the spec:
Content-Type
header at all in your fetch
call, then the browser always automatically on its own sets a Content-Type
header for the request; unless…Content-Type
header in your fetch
call, then the browser uses the value you set.So because those two are the only possible outcomes and because the fetch
API doesn’t provide any method for completely removing any browser-set request headers, then if a request has a request body, there’s no way to send the request using the fetch
API without it ending up with a Content-Type
header.