Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't send default header #382

Closed
kyeotic opened this issue Jul 19, 2016 · 74 comments · Fixed by #1845 or #2844
Closed

Don't send default header #382

kyeotic opened this issue Jul 19, 2016 · 74 comments · Fixed by #1845 or #2844

Comments

@kyeotic
Copy link

kyeotic commented Jul 19, 2016

If a header has been set as a default, there does not appear to be any way to skip it on an individual request. Setting null or undefined doesn't do anything.

@rubennorte
Copy link
Member

Could you provide some code example that shows that behaviour? What default header are you trying to unset?

@kyeotic
Copy link
Author

kyeotic commented Jul 20, 2016

If I set axios.defaults.headers.common['Content-Type'] = 'application/json', I cannot unset that that header for an individual request, I can only set it to another value.

@rubennorte
Copy link
Member

How did you tried to unset the header? Using something like this?

axios.request('/path', {
  headers: {
    'Content-Type': null
  }
});

@kyeotic
Copy link
Author

kyeotic commented Jul 20, 2016

Yes. That did not work

@rubennorte
Copy link
Member

Sorry I missed the method in my example. Could have been that what made it not work?

@kyeotic
Copy link
Author

kyeotic commented Aug 7, 2016

I have tried setting the method as well. I suspect it has to do with an Object.assign() somewhere just not paying attention to the undefined value.

@mzabriskie
Copy link
Member

@tyrsius what version of axios are you using? I just wrote a test to try and reproduce this and it passed. I'm wondering if this may have been fixed in a newer version.

For reference here is my test:

it('should remove default headers when config indicates', function (done) {
  var instance = axios.create();
  instance.defaults.headers.common['Content-Type'] = 'application/json';

  instance.post('/foo/bar/', {
    firstName: 'foo',
    lastName: 'bar'
  }, {
    headers: {
      'Content-Type': null
    }
  });

  getAjaxRequest().then(function (request) {
    testHeaderValue(request.requestHeaders, 'Content-Type', null);
    done();
  });
});

@Madalosso
Copy link

Madalosso commented Sep 13, 2016

I had this problem too.
I'm trying to remove the header 'Authorization' from 'common' but the only way that I've found to make it work is delete the property from the axios.defaults.header, make the request, and then add the property back again.
This will be easier when this bug is fixed

@chipit24
Copy link

This is also a problem for me (using axios v0.14.0), especially for endpoints that use Access-Control-Allow-Headers, in which case I need to make sure certain headers aren't sent with the request at all.

@SepiaGroup
Copy link

SepiaGroup commented Oct 19, 2016

i am using version 15.2 and when i do

headers: {
      'Content-Type': null
    }

it does set the header value to null. but i really need the header name to be removed completely.

for example when using s3 and generating a presigned url to post a file to a bucket you can not have an Authenticate header. but i have a default Authorization set because the vast majority of my requests require it for my own api.

the way i got around this is by doing the following

    var instance = axios.create();
    instance.defaults.headers.common = {};

    instance.put(signedUrl, file, {headers: {'Content-Type': file.type}})
        .then(function (result) {
            console.log(result);
        })
        .catch(function (err) {
            console.log(err);
        });

Edit: this does not work as expected. the issue is that when you clear the headers

instance.defaults.headers.common = {};

it removes it at a global level. this will log me out as i use a header for Auth.

to get around this issue until there is a better way of handling global config i am passing the required headers on every call, not ideal.

@paseo
Copy link

paseo commented Nov 23, 2016

#545

@axelgenus
Copy link

I had the same problem but solved with

delete axios.defaults.headers.common["Authorization"]; // or which ever header you have to remove

@Christilut
Copy link

I have the exact situation as @SepiaGroup
I tried to overwrite it with null and '' but then AWS sees null as my Authorization and complains.
I tried to delete it from the instance but then my Authorization is deleted globally so I get 403 on my own server.

I guess my workaround will be to use an old XHR for this but it makes me sad :(

@yaronlevi
Copy link

+1 Also stuck with not being able to clear the default header for a specific call.

@lukasborawski
Copy link

+1

1 similar comment
@ojczeo
Copy link

ojczeo commented Jun 9, 2017

+1

@tannerlinsley
Copy link

I'm also seeing this behavior in the latest version (0.16.2). Sadness ensues :(

@lzp4ever
Copy link

lzp4ever commented Jun 22, 2017

just delete it

delete instance.defaults.headers.common.Authorization

the way below is not working.

I think we could create a logout method that recreate the axios instance to replace the old one.

let instance = axios.create({options})

function: logout () {
    instance = axios.create({options})
}

@wdews
Copy link

wdews commented Jun 22, 2017

@lzp4ever that would work in most instances, I expect. But in cases where someone has added request and response interceptors, or done more configuration of the instance beyond simply passing in config options, wouldn't your approach require that all of that be redone?

Just wondering if perhaps @axelgenus's solution is cleaner and requires less "resetting" of an entire Axios instance from which you're attempting to remove a particular customized header from.

@maryokhin
Copy link

Would be nice to be able to NOT send the default header without deleting properties :)

@aaronfahey
Copy link

+1

1 similar comment
@Jenan
Copy link

Jenan commented Jul 19, 2017

+1

@oodgaard
Copy link

oodgaard commented Jul 24, 2017

+1. It does seem sad that you cannot remove the headers for an instance. This means that all instances have a reference to the global variable.

@dkanas
Copy link

dkanas commented Jul 26, 2017

+1

1 similar comment
@Spacelapp
Copy link

+1

@shyamchandranmec
Copy link

+1 Please fix this issue.

@michaelcpuckett
Copy link

+1

1 similar comment
@matthewlilley
Copy link

+1

@mikhoq
Copy link

mikhoq commented Mar 27, 2020

I am running into rather similar situation but with a GET request:

  1. GET http://www.saasserviceprovider.com/notpublicapi with header of Authorization: Bearer mytoken
  2. Redirects to AWS S3 endpoint. Redirect URL has a query string: X-Amz-Signature=blahblahblah appended.
  3. AWS S3 rejects call because two Authenication:
  • Header: Authorization bearer token
  • Query string: X-Amz-Signature=blahblahblah

Neither transformRequest, transformResponse, axios.interceptors.request, axios.interceptors.response appears to be able to allow me to inject myself into the process and temporarily remove the Authorization Header when hitting the redirection to AWS S3 - presumably if I could get in after a redirect I could do something to effect of delete headers.Authorization.

Same call with request api/postman/etc works.

Seriously though... has to be better way (within axios)

@iyerusad Did you find any better way than your workaround? I'm facing the same issue, and it's frustrating that I don't seem to be able to intercept the redirect and delete the Authorization header just for that follow-up / redirect request (to amazon in this case) 🤔

@iyerusad
Copy link

@iyerusad Did you find any better way than your workaround? I'm facing the same issue, and it's frustrating that I don't seem to be able to intercept the redirect and delete the Authorization header just for that follow-up / redirect request (to amazon in this case) 🤔

Not really - using option B. from below.

The options I evaluated:
A. Adopt alternative wrapper/client (e.g. fetch api? request? request seemed to work but is apparently deprecated). This might be cleanest option but means switching to another http client syntax.

B. Wrap my workaround into a function and use that function for requests that I know run into this issue - ugly seemingly less efficient but using this at the moment.

C. Hope I am an idiot and using axios wrong and there is saner workaround with axios.

D. Axios get fix/patch?

@chinesedfan
Copy link
Collaborator

@mikhoq @iyerusad Would you mind to open a new issue to track your problem? Because it is different with the current one, which may have been fixed in #2844.

@iyerusad
Copy link

No problem - Opened #2855.

@mikhoq please add comment there if you have public repro endpoint.

@guanzo
Copy link

guanzo commented Apr 3, 2020

So apparently transformRequest gets called for GET requests? I tried this and it worked, it only deleted the header for the current request.

transformRequest: [(data, headers) => {
    delete headers.common.Authorization
    return data
}]

But the docs say

// transformRequest allows changes to the request data before it is sent to the server
// This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE'

Which made me think transformRequest wouldn't be called for GET requests, but it is. So what does this line actually mean?

"This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE'"

Perhaps, "This is potentially only useful for ...." ....? It's misleading imo.

@idjemaoune
Copy link

this works:
headers: {
'content-type': 'application/json',
'Authorization': null,
}

v0.20.0 automation moved this from Review in progress to Done Jun 4, 2020
jasonsaayman added a commit that referenced this issue Jun 4, 2020
Co-authored-by: Jay <jasonsaayman@gmail.com>
@jasonsaayman jasonsaayman removed this from Done in v0.20.0 Jun 8, 2020
nikugogoi added a commit to nikugogoi/axios that referenced this issue Jun 26, 2020
* Add react-hooks-axios to Libraries section of ECOSYSTEM.md (axios#1925)

* Update README.md. - Add Querystring library note (axios#1896)

* Update README.md. Querystring libraries note

* Typo in README.md

Co-Authored-By: airs0urce <airs0urce0@gmail.com>

* Update README.md

Co-Authored-By: airs0urce <airs0urce0@gmail.com>

* Add issue templates

* Fixing Mocha tests by locking follow-redirects version to 1.5.10 (axios#1993)

* docs(ECOSYSTEM): add axios-api-versioning (axios#2020)

* Makes Axios error generic to use AxiosResponse (axios#1738)

* Destroy stream on exceeding maxContentLength (fixes axios#1098) (axios#1485)

* Clarify what values responseType can have in Node (axios#2121)

It seems that `responseType: 'blob'` doesn't actually work in Node (when I tried using it, response.data was a string, not a Blob, since Node doesn't have Blobs), so this clarifies that this option should only be used in the browser

* Update README.md. - Change `.then` to `.finally` in example code (axios#2090)

* Fixing spacing for README.md (axios#2066)

* Update README.md - Add instructions for installing with yarn (axios#2036)

* Unzip response body only for statuses != 204 (axios#1129)

* Add r2curl in ECOSYSTEM (axios#2141)

* Update ECOSYSTEM.md - Add Axios Endpoints (axios#2176)

* Add DELETE to list of methods that allow data as a config option (axios#2169)

* Add information about auth parameter to README (axios#2166)

* Update Changelog for release (0.19.0)

* Releasing 0.19.0

* Fix typo in CHANGELOG.md - s/issue/issues (axios#2193)

- issue link is not found.
- typo: issue => issues

* Fix travis CI build (axios#2386)

* Do not modify config.url when using a relative baseURL (resolves axios#1628) (axios#2391)

* Adding tests to show config.url mutation

Because config.url is modified while processing the request
when the baseURL is set,
it is impossible to perform a retry with the provided config object.

Ref axios#1628

* Fixing url combining without modifying config.url

As config.url is not modified anymore during the request processing.
The request can safely be retried after it failed with the provided
config.

resolves axios#1628

* Fix a typo in README (axios#2384)

* Fix grammar in README.md (axios#2271)

* Axios create url bug (axios#2290)

* Fix axios#2234 

* added spacing --eslint

* added test cases

* removed unexpected cases after updating the code

* Fixing set `config.method` after mergeConfig for Axios.prototype.request (axios#2383)

Inside Axios.prototype.request function, It's forced to set
method to 'get' after `mergeConfig` if config.method exists, which makes the defaults.method not effective.

* Fixing custom config options (axios#2207)

- fixes axios#2203

* Doc fixes, minor examples cleanup (axios#2198)

* README.md COOKBOOK.md: minor fixes

 * simplify language

* ECOSYSTEM: create a few categories

* Examples: log port listening to

* upgrade bootstrap 3 -> 4 in examples

bootstrap 4 is slightly smaller then 3.2.0
so it should also help load examples faster

* categorize 0.19 items a little differently

surface user/consumer changes first

* Update response interceptor docs (axios#2399)

* Fix cancellation error on build master. axios#2290 axios#2207 (axios#2407)

* docs: minor tweak (axios#2404)

made the license section link up to the respective file.

* Sintaxe alternative to send data into the body (axios#2317)

* upadating README: notes on CommonJS autocomplete (axios#2256)

closes axios#2226. add note on how to gain typings / autocomplete / intellisense when using CommonJS (`require()`) imports

* updating spelling and adding link to docs (axios#2212)

* Fixing issue 2195 - order of if/else blocks is causing unit tests mocking XHR. (axios#2201)

* 🐛Fix request finally documentation in README (axios#2189)

* Fixing socket hang up error on node side for slow response. (axios#1752)

* Fixing socket hang up error on node side for slow response.

* eslint check

* Fix word 'sintaxe' to 'syntax' in README.md (axios#2432)

- translate 'sintaxe' word from portuguese to english

* Add toJSON property to AxiosError type (axios#2427)

I noticed the error object has a `toJSON` method but when I tried to use it in my typescript code it complained it didn't exist, even though I was using the `AxiosError` type.

* Make redirection from HTTP to HTTPS work (axios#2426)

When calling an HTTP resource redirecting to a HTTPS one with a keepAlive agent. We get the following error:
```
TypeError [ERR_INVALID_PROTOCOL]: Protocol "https:" not supported. Expected "http:"
    at new ClientRequest (_http_client.js:119:11)
    at Object.request (https.js:281:10)
    at RedirectableRequest._performRequest (/Users/jthomassey/projects/ecom-shop-web/node_modules/follow-redirects/index.js:169:24)
    at RedirectableRequest._processResponse (/Users/jthomassey/projects/ecom-shop-web/node_modules/follow-redirects/index.js:260:10)
    at ClientRequest.RedirectableRequest._onNativeResponse (/Users/jthomassey/projects/ecom-shop-web/node_modules/follow-redirects/index.js:50:10)
    at Object.onceWrapper (events.js:277:13)
    at ClientRequest.emit (events.js:189:13)
    at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:556:21)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)
    at Socket.socketOnData (_http_client.js:442:20)
```

This can be tested here : 
```
const http = require('http');
const https = require('https');
const axios = require('axios');

axios.get('http://www.photobox.fr', { httpAgent: http.Agent({ keepAlive:true }), httpsAgent: https.Agent({ keepAlive:true }) })
  .then(response => {
    console.log(response);
    console.log(response.headers);
  })
  .catch(error => {
    console.log(error);
  });
```

Axios delegate the redirection to the follow-redirect package which accept an option `agents` for both http and https agent see : https://github.com/follow-redirects/follow-redirects#per-request-options

* fix: Fixing subdomain handling on no_proxy (axios#2442)

* Add license badge (axios#2446)

MIT License badge added in README.md file

* Fixing Vulnerability A Fortify Scan finds a critical Cross-Site Scrip… (axios#2451)

* Fixing Vulnerability A Fortify Scan finds a critical Cross-Site Scripting

* use var insted of const

* Add error toJSON example (axios#2466)

* custom timeout prompt copy (axios#2275)

* style: ui

* feat: custom timeout txtx

* feat: custom timeout txtx

* Fixing missing words in docs template (axios#2259)

* Fix to prevent XSS, throw an error when the URL contains a JS script (axios#2464)

* Fixes issue where XSS scripts attacks were possible via the URL

* Fix error

* Move throwing error up

* Add specs and make regex cover more xss cases

* Update Webpack + deps, remove now unnecessary polyfills (axios#2410)

* Update deps

 * handles webpack 1 -> 4 migration

* remove promise helpers from dev files

assume `Promise` is available, or polyfilled by
the consumer

* Remove isArray util. `isArray` has good coverage, even
   in IE9. So lets remove the custom polyfill.

 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray

also resolves a few lint issues

* Remove trim util

String.protoype.trim has good coverage (including IE9)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim

Also, the http adapter already uses the native method.

* Change syntax to see if build passes (axios#2488)

* Change syntax to see if build passes

* Test commit

* Test with node 10

* Test adding all browsers in travis

* remove other browsers when running on travis

* Revert "Update Webpack + deps, remove now unnecessary polyfills" (axios#2479)

* Revert "Update Webpack + deps, remove now unnecessary polyfills (axios#2410)"

This reverts commit 189b34c.

* Fix build (axios#2496)

* Change syntax to see if build passes

* Test commit

* Test with node 10

* Test adding all browsers in travis

* remove other browsers when running on travis

* Update README.md (axios#2504)

* Adding Typescript HTTP method definition for LINK and UNLINK. (axios#2444)

* Update docs with no_proxy change, issue axios#2484 (axios#2513)

* Document fix (axios#2514)

* Adding options typings (axios#2341)

* Fix XSS logic that matched some valid urls (axios#2529)

* Fix XSS logic that matched some valid urls, e.g. "/one/?foo=bar", when it shouldn't match those

* Fix badge, use master branch (axios#2538)

* Remove dependency on is-buffer (axios#1816)

* Remove dependency on is-buffer from package.json

* Fix CI build failure (axios#2570)

* fixing Travis link (axios#2540)

* Remove 'includes' API, fix CI build failure (axios#2574)

* Remove 'includes' API, fix CI build failure

* fix: fix ignore set withCredentials false (axios#2582)

* Fixing invalid agent issue (axios#1904)

* If this place is false, it will report an error, so you should delete the useless code. (axios#2458)

* Fixing typo in CHANGELOG.md: s/Functionallity/Functionality (axios#2639)

* Releasing 0.19.1

* Fix link formatting in CHANGELOG.md to display PR number in parens as link (axios#2643)

* Remove unnecessary XSS check introduced by axios#2451 (axios#2679)

* Remove unnecessary XSS check introduced by axios#2451

* Remove test file of `isValidXss`

* Updating changlog for 0.19.2 release

* Releasing 0.19.2

* Revert `finally` as `then` (axios#2683)

Co-authored-by: Yasu Flores <carlosyasu91@gmail.com>

* chore: add `jsdelivr` and `unpkg` support (axios#2443)

* Fix merging of params (axios#2656)

* Name function to avoid ESLint func-names warning

* Switch params config to merge list and update tests

* Restore testing of both false and null

* Restore test cases for keys without defaults

* Include test for non-object values that aren't false-y.

* Compatible with follow-redirect aborts the request (axios#2689)

* Compatible with follow-redirect aborts the request

* Use the error code

* Fix tests in browsers (axios#2748)

* Fixing issue for HEAD method and gziped repsonse (axios#2666)

* Fixing unit test failure in Windows OS (axios#2601)

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Adding jsDelivr link in README (axios#1110)

* Adding jsDelivr link

* Add SRI

* Remove SRI

Co-authored-by: Yasu Flores <carlosyasu91@gmail.com>
Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Adding responseEncoding to mergeConfig (axios#1745)

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Update ' sign to ` in proxy spec (axios#2778)

* Add `onUploadProgress` and `onDownloadProgress` are browser only (axios#2763)

Saw in axios#928 and axios#1966 that `onUploadProgress` and `onDownloadProgress` only work in the browser and was missing that from the README.

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Added Response header access instructions (axios#1901)

* Added Response header access instructions

* Added note about using bracket notation

* Include axios-hooks in ECOSYSTEM.md (axios#2003)

* Fixing CHANGELOG.md issue link (axios#2784)

* Add test for redirecting with too large response (axios#2695)

* Add independent `maxBodyLength` option (axios#2781)

* Add independent option to set the maximum size of the request body

* Remove maxBodyLength check

* Update README

* Assert for error code and message

* Adding option to disable automatic decompression (axios#2661)

* Adding ability to disable auto decompression

* Updating decompress documentation in README

* Fixing test\unit\adapters\http.js lint errors

* Adding test for disabling auto decompression

* Removing changes that fixed lint errors in tests

* Removing formating change to unit test

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Adding tests for method `options` type definitions (axios#1996)

Update tests.

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Allow PURGE method in typings (axios#2191)

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Fixing getting local files (file://) failed (axios#2470)

* fix issue axios#2416, axios#2396

* fix Eslint warn

* Modify judgment conditions

* add unit test

* update unit test

* update unit test

* Fixing 'progressEvent' type (axios#2851)

* Fix 'progressEvent' type

* Update axios.ts

* Updating documentation for usage form-data (axios#2805)

Closes axios#2049

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>

* Update README.md about validateStatus (axios#2912)

Rewrote the comment from "Reject only if the status code is greater than or equal to 500" to "Resolve only if the status code is less than 500"

* Documentation update to clear up ambiguity in code examples (axios#2928)

* Made a adjustment to the documenation to clear up any ambiguity around the use of "fs". This should help clear up that the code examples with "fs" cannot be used on the client side.

Co-authored-by: Jay <jason.saayman@basebone.com>

* Add CDNJS version badge in README.md (axios#878)

This badge will show the version on CDNJS!

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Fixing Cookie Helper with Asyc Components (axios#1105) (axios#1107)

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Bug/allow header to contain http verb keys axios#1252 (axios#1258)

* Failing test for axios#1252

* Only delete header keys that match an HTTP verb if the value is a non-string

Co-authored-by: David Ko <david.ko@pvtmethod.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>

* Revert "Bug/allow header to contain http verb keys axios#1252 (axios#1258)" (axios#2977)

This reverts commit 920510b.

* fix 'Network Error' in react native android (axios#1487)

There is a bug in react native Android platform when using get method.  It will trigger a 'Network Error' when passing the requestData which is an empty string to request.send function. So if the  requestData is an empty string we can set it to null as well to fix the bug.

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Fixing password encoding with special characters in basic authentication (axios#1492)

* Fixing password encoding with special characters in basic authentication

* Adding test to check if password with non-Latin1 characters pass

Co-authored-by: petr.mares <petr.mares@linecorp.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>

* Fixing special char encoding (axios#1671)

* removing @ character from replacement list since it is a reserved character

* Updating buildURL test to not include the @ character

* Removing console logs

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Fixing default transformRequest with buffer pools (axios#1511)

* Fixing default transformRequest of TypedArrays with buffer pools

A buffer pool is a large ArrayBuffer of a preset size used with a TypedArray
such as Uint8Array. This can speed up performance when constructing TypedArrays
of unknown sizes, and is a technique used by Node with their Buffers, and
by libraries like dcodeIO/protobuf.js.

Because the ArrayBuffer of such a TypedArray is much longer than the array
itself, using `.buffer` to transform the array before POSTing results in
sending a request with many extraneous empty bytes, which is wastefule and may
result in unexpected behavior.

Using `.slice()` before grabbing the ArrayBuffer fixes the problem by creating
a new TypedArray with a buffer of the expected length.

Signed-off-by: Zac Delventhal <delventhalz@gmail.com>

* Adding test for using default transformRequest with buffer pools

Adds a new test to the default transformRequest, running it on a
Uint8Array with a byte length of 16, but a much larger ArrayBuffer
with a byte length of 256. The transformed array should not include
any extra bytes, and so must have a byte length of just 16.

Signed-off-by: Zac Delventhal <delventhalz@gmail.com>

Co-authored-by: Zac Delventhal <zac@bitwise.io>
Co-authored-by: Jay <jasonsaayman@gmail.com>

* Include swagger-taxos-codegen in ECOSYSTEM.md (axios#2162)

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Fixing an issue that type 'null' is not assignable to validateStatus (axios#2773)

Co-authored-by: Xianming Zhong <chinesedfan@qq.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>

* Update README.md (axios#2887)

Small change to the data attribute doc of the config. A request body can also be set for DELETE methods but this wasn't mentioned in the documentation (it only mentioned POST, PUT and PATCH). Took my some 10-20 minutes until I realized that I don't need to manipulate the request body with transformRequest in the case of DELETE.

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Remove axios.all() and axios.spread() from Readme.md (axios#2727)

* Updating Readme.md
- remove axios.all(), axios.spread()

* Updating Readme.md
- replace example
- axios.all() -> Promise.all()
- axios.spread(function (acct, perms)) -> function (acct, perms)
- add deprecated mark

* Update README.md

Make changes after review

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Revert "Fixing default transformRequest with buffer pools (axios#1511)" (axios#2982)

This reverts commit a9a3b5e.

* Fixing overwrite Blob/File type as Content-Type in browser. (axios#1773)

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Allow opening examples in Gitpod (axios#1958)

Co-authored-by: Emily Morehouse <emilyemorehouse@gmail.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>

* Include axios-data-unpacker in ECOSYSTEM.md (axios#2080)

Co-authored-by: Jay <jasonsaayman@gmail.com>

* docs(): Detailed config options environment. (axios#2088)

* docs(): Detailed config options environment.

* Update README.md

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Adding console log on sandbox server startup (axios#2210)

* Adding console log on sandbox server startup

* Update server.js

Add server error handeling

* Update server.js

Better error message, remove retry.

Co-authored-by: Philippe Recto <precto1285@gmal.com>
Co-authored-by: Felipe Martins <felipewmartins@gmail.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>

* Add test with Node.js 12 (axios#2860)

* test with Node.js 12

* test with latest

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Allow unsetting headers by passing null (axios#382) (axios#1845)

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Refactor mergeConfig without utils.deepMerge (axios#2844)

* Adding failing test

* Fixing axios#2587 default custom config persisting

* Adding Concat keys and filter duplicates

* Fixed value from CPE

* update for review feedbacks

* no deepMerge

* only merge between plain objects

* fix rename

* always merge config by mergeConfig

* extract function mergeDeepProperties

* refactor mergeConfig with all keys, and add special logic for validateStatus

* add test for resetting headers

* add lots of tests and fix a bug

* should not inherit `data`

* use simple toString

* revert axios#1845

Co-authored-by: David Tanner <david.tanner@lifeomic.com>
Co-authored-by: Justin Beckwith <justin.beckwith@gmail.com>

* Replace 'blacklist' with 'blocklist' (axios#3006)

* Add GitHub actions to close invalid issues (axios#3022)

* add close actions

* fix with checkout

* update issue templates

* add reminder

* update close message

* Add GitHub actions to close stale issues/prs (axios#3029)

* prepare stale actions

* update messages

* Add exempt labels and lighten up comments

Co-authored-by: Jay <jasonsaayman@gmail.com>

* Update close-issues.yml (axios#3031)

* Update close-issues.yml

Update close message to read better 😄

* Fix use of quotations

Use single quotes as per other .yml files

* Remove user name form message

* Add days and change name to work (axios#3035)

* Fix stale bot config (axios#3049)

* fix stale bot config

* fix multiple lines

* add table of content (preview) (axios#3050)

* add toc (preview)

* remove toc in toc

Signed-off-by: Moni <usmoni@gmail.com>

* fix sublinks

* fix indentation

* remove redundant table links

* update caps and indent

* remove axios

Co-authored-by: Moni <usmoni@gmail.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>

* Adding support for URLSearchParams in node (axios#1900)

* Adding support for URLSearchParams in node

* Remove un-needed code

* Update utils.js

* Make changes as suggested

Co-authored-by: Kamil Posiadala <kamil.posiadala@codecentric.de>
Co-authored-by: Jay <jasonsaayman@gmail.com>

Co-authored-by: Cody Chan <int64ago@gmail.com>
Co-authored-by: Dmitriy Eroshenko <airs0urce0@gmail.com>
Co-authored-by: Emily Morehouse <emilyemorehouse@gmail.com>
Co-authored-by: grumblerchester <grumblerchester@users.noreply.github.com>
Co-authored-by: Weffe <rogelio_negrete@live.com>
Co-authored-by: Suman Lama <lamasuman2@gmail.com>
Co-authored-by: Gadzhi Gadzhiev <resuremade@gmail.com>
Co-authored-by: Tyler Breisacher <tbreisacher@hustle.com>
Co-authored-by: Omar Cai <xcqvmywoj@yahoo.com.tw>
Co-authored-by: Josh McCarty <43768310+joshomccarty@users.noreply.github.com>
Co-authored-by: Victor Hermes <me.victorhermes@gmail.com>
Co-authored-by: drawski <d.rawski@gmail.com>
Co-authored-by: 유용우 / CX <uyu423@gmail.com>
Co-authored-by: Renan <renancaraujo@users.noreply.github.com>
Co-authored-by: Daniela Borges Matos de Carvalho <alunassertiva@gmail.com>
Co-authored-by: xlaguna <50924665+xlaguna@users.noreply.github.com>
Co-authored-by: Takahiro Ikeda <ikeadless@gmail.com>
Co-authored-by: Felipe Martins <felipewmartins@gmail.com>
Co-authored-by: multicolaure <43094923+multicolaure@users.noreply.github.com>
Co-authored-by: Denis Sikuler <progwork@yandex.com>
Co-authored-by: Michael Foss <michael@mikefoss.com>
Co-authored-by: DIO <dhrubesh97@gmail.com>
Co-authored-by: bushuai <ibushuai@gmail.com>
Co-authored-by: Rafael Renan Pacheco <rafael.renan.pacheco@gmail.com>
Co-authored-by: Avindra Goolcharan <aavindraa@gmail.com>
Co-authored-by: Sagar Acharya <sagarach65@gmail.com>
Co-authored-by: James George <jamesgeorge998001@gmail.com>
Co-authored-by: Lucas <33911520+portolucas@users.noreply.github.com>
Co-authored-by: Vamp <25523682+the-vampiire@users.noreply.github.com>
Co-authored-by: Fabio Aiello <heloflyer@hotmail.com>
Co-authored-by: Joshua Melvin <joshua.melvin@outlook.com>
Co-authored-by: Ahmed Tarek <ahmed.tokyo1@gmail.com>
Co-authored-by: Ya Hui Liang(Ryou) <46517115@qq.com>
Co-authored-by: Jihwan Oh <fureweb.com@gmail.com>
Co-authored-by: Tiago Rodrigues <tmcrodrigues@gmail.com>
Co-authored-by: Jeremie Thomassey <44839746+JitixPhotobox@users.noreply.github.com>
Co-authored-by: Maskedman99 <31368194+Maskedman99@users.noreply.github.com>
Co-authored-by: Wataru <taare-xxx09@ezweb.ne.jp>
Co-authored-by: Yasu Flores <carlosyasu91@gmail.com>
Co-authored-by: IVLIU <liupyliupy@outlook.com>
Co-authored-by: Crhistian Ramirez <16483662+crhistianramirez@users.noreply.github.com>
Co-authored-by: Harshit Singh <harshit.singh1101@gmail.com>
Co-authored-by: Marlon Barcarol <marlon.barcarol@gmail.com>
Co-authored-by: Luke Policinski <Luke@LukePOLO.com>
Co-authored-by: Angelos Chalaris <chalarangelo@gmail.com>
Co-authored-by: Alanscut <948467222@qq.com>
Co-authored-by: ZhaoXC <xchunzhao@gmail.com>
Co-authored-by: Michael Shin <mshin@godaddy.com>
Co-authored-by: 不才 <1450941858@qq.com>
Co-authored-by: Malik Dirim <github@malikdirim.de>
Co-authored-by: Emily Morehouse <emily@cuttlesoft.com>
Co-authored-by: Xianming Zhong <chinesedfan@qq.com>
Co-authored-by: JounQin <admin@1stg.me>
Co-authored-by: Jonathan Sharpe <j.r.sharpe@gmail.com>
Co-authored-by: Nikita Galkin <nikita@galk.in>
Co-authored-by: jennynju <46782518+jennynju@users.noreply.github.com>
Co-authored-by: Lukas Drgon <lukas.drgon@gmail.com>
Co-authored-by: Thibault Ehrhart <1208424+ehrhart@users.noreply.github.com>
Co-authored-by: Jimmy Liao <52391190+jimmy-liao-gogoro@users.noreply.github.com>
Co-authored-by: Ian Wijma <ian@wij.ma>
Co-authored-by: Alexandru Ungureanu <khakcarot@gmail.com>
Co-authored-by: Simone Busoli <simone.busoli@gmail.com>
Co-authored-by: Fonger <5862369+Fonger@users.noreply.github.com>
Co-authored-by: Gustavo López <gualopezb@gmail.com>
Co-authored-by: Spencer von der Ohe <s.vonderohe40@gmail.com>
Co-authored-by: Motonori Iwata <121048+iwata@users.noreply.github.com>
Co-authored-by: Alan Wang <wp_scut@163.com>
Co-authored-by: Benny Neugebauer <bn@bennyn.de>
Co-authored-by: Remco Haszing <remcohaszing@gmail.com>
Co-authored-by: hexaez <45806662+hexaez@users.noreply.github.com>
Co-authored-by: Jay <jasonsaayman@gmail.com>
Co-authored-by: Jay <jason.saayman@basebone.com>
Co-authored-by: Samina Fu <sufuf3@gmail.com>
Co-authored-by: Ryan Bown <rbown@niftee.com.au>
Co-authored-by: David Ko <david.ko@velvetreactor.com>
Co-authored-by: David Ko <david.ko@pvtmethod.com>
Co-authored-by: huangzuizui <huangzuizui@gmail.com>
Co-authored-by: Petr Mares <petr@mares.tw>
Co-authored-by: petr.mares <petr.mares@linecorp.com>
Co-authored-by: David <cygnidavid@gmail.com>
Co-authored-by: Zac Delventhal <delventhalz@gmail.com>
Co-authored-by: Zac Delventhal <zac@bitwise.io>
Co-authored-by: Michał Zarach <michal.m.zarach@gmail.com>
Co-authored-by: Taemin Shin <cprayer13@gmail.com>
Co-authored-by: marcinx <mail@marcinx.com>
Co-authored-by: Taegyeoung Oh <otk1090@naver.com>
Co-authored-by: George Cheng <Gerhut@GMail.com>
Co-authored-by: Sven Efftinge <sven.efftinge@typefox.io>
Co-authored-by: Anubhav Srivastava <anubhav.srivastava00@gmail.com>
Co-authored-by: jeffjing <zgayjjf@qq.com>
Co-authored-by: Philippe Recto <33725746+precto1285@users.noreply.github.com>
Co-authored-by: Philippe Recto <precto1285@gmal.com>
Co-authored-by: Martti Laine <martti@codeclown.net>
Co-authored-by: David Tanner <david.tanner@lifeomic.com>
Co-authored-by: Justin Beckwith <justin.beckwith@gmail.com>
Co-authored-by: rockcs1992 <chengshi1219@gmail.com>
Co-authored-by: Frostack <soulburn007@gmail.com>
Co-authored-by: Moni <usmoni@gmail.com>
Co-authored-by: Kamil Posiadała <3dcreator.pl@gmail.com>
Co-authored-by: Kamil Posiadala <kamil.posiadala@codecentric.de>
gwdp pushed a commit to ikon-integration/axios that referenced this issue Jul 17, 2020
gwdp pushed a commit to ikon-integration/axios that referenced this issue Jul 17, 2020
@Roms1383
Copy link

Tried setting { headers: { 'Content-Type' = null } } without success,
so to add to @axelgenus helpful comment, I had to go a bit further :

import Axios from 'axios'
const client = Axios.create({
  // ...
  transformRequest: [(data, headers) => {
    // add required "Content-Type" whenever body is defined
    if (data) headers['Content-Type'] = 'application/x-www-form-urlencoded'
    return data
  }],
})
// completely remove "Content-Type" from instance by default
delete client.defaults.headers.common['Content-Type']
delete client.defaults.headers.post['Content-Type']
delete client.defaults.headers.put['Content-Type']
delete client.defaults.headers.patch['Content-Type']
// ...

Use case was implementing requests layer for Bitstamp API V2 authentication method.

@JerbyIchrak
Copy link

I have an OPTION request before my PUT request, so @aaronatmycujoo 's transformRequest solution worked for my OPTION request, but the Authorization header was still applied to my PUT request.

Ultimately i ended up making separate instances for auth vs public requests so my auth header was only applied to the auth instance.

// do not configure auth header
export const publicAxios = axios.create(...)

// configure auth header
export const authAxios = axios.create(...)

// no auth header present for public instance
publicAxios.put(...)

I tried this solution ,it seems right but didn't work for me because i need to add some custom interceptors , so i made a seperate file containing another instance i called it publicInstance and i used it for all my public routes . It works !

@yulafezmesi
Copy link

Sperate your auth interceptor and use it whenever necessary.

if (getAuthToken()) {
  httpClient.interceptors.request.use(authInterceptor);
} else {
  httpClient.interceptors.request.eject(authInterceptor);
}

@EKOLX
Copy link

EKOLX commented Jul 21, 2021

I tried every single suggestion from each post but none of them help.
Axios still sending 'Content-Type' whenever I try to delete it.
From React Native app I'm trying to upload file into AWS S3 via presigned url, and with Content-Type I get 403 error.
I tried it with postman and without any headers, it uploads successfully, but I don't understand why I can't exclude Content-Type from http request.

@Pixelatex
Copy link

@EKOLX is correct... just been through this whole circus myself. Why the bleeping hell is it so hard to remove a default header.

I need to work with some major company's api who refuse to accept a request that doesn't have exactly the params that they specify.. in this case that you can't send a content-type header...

@jasonsaayman
Copy link
Member

@Pixelatex please can you open a new issue and then tag me in it? Then I can have a look.

@SaimumIslam
Copy link

just keep the header in axios it works like charm.
{```

  "Content-Type": "",

}

mbargiel pushed a commit to mbargiel/axios that referenced this issue Jan 27, 2022
Co-authored-by: Jay <jasonsaayman@gmail.com>
@kameshdhana
Copy link

I had the same problem but solved with

delete axios.defaults.headers.common["Authorization"]; // or which ever header you have to remove

The problem is if I remove it the endpoint call fails

@Rickyv92
Copy link

Having this issue, using "axios ^0.18.0"

This companies application injects an 'x-api-key' using interceptors.

I've tried using the methods posted above, but the only ones that remove the x-api-key remove them globally and breaks the entire app.

Any updates or help would be very helpful.

Thanks

@iyerusad
Copy link

Having this issue, using "axios ^0.18.0"

Using "axios": "^0.21.1", issue appears to be resolved.

In any case current is 1.4.0, should update as 0.18 is pre-1.0 and ~5 years old.

@Rickyv92
Copy link

Rickyv92 commented Jul 1, 2023

In any case current is 1.4.0, should update as 0.18 is pre-1.0 and ~5 years old.

Good point, i'll look into upgrading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects