### Describe the issue

I set `axios.defaults.headers.common['Content-Type'] = 'application/json'`. When firing a `axios.patch` request (without a config), the request uses `application/x-www-form-urlencoded` instead.

### Example Code

```js
// This does not work as expected:
axios.defaults.headers.common['Content-Type'] = 'application/json'

// This does:
axios.defaults.headers.common['Content-Type'] = 'application/json'
axios.defaults.headers.patch['Content-Type'] = 'application/json'
```


### Expected behavior

I expected POST requests to use `axios.defaults.headers.common`, too.

I think this is where the problem (or intended behaviour) comes from: https://github.com/axios/axios/blob/3f53eb6960f05a1f88409c4b731a40de595cb825/lib/core/dispatchRequest.js#L46

### Axios Version

1.4.0

### Adapter Version

_No response_

### Browser

Firefox

### Browser Version

116.0.3 (64-bit)

### Node.js Version

_No response_

### OS

_No response_

### Additional Library Versions

_No response_

### Additional context/Screenshots

_No response_
lib/core/Axios.js
responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
    });
    let promise;
    let i = 0;
    let len;
    if (!synchronousRequestInterceptors) {
      const chain = [dispatchRequest.bind(this), undefined];
      chain.unshift.apply(chain, requestInterceptorChain);
      chain.push.apply(chain, responseInterceptorChain);
      len = chain.length;
      promise = Promise.resolve(config);
      while (i < len) {
        promise = promise.then(chain[i++], chain[i++]);
      }
      return promise;
    }
    len = requestInterceptorChain.length;
    let newConfig = config;
    i = 0;
    while (i < len) {
      const onFulfilled = requestInterceptorChain[i++];
      const onRejected = requestInterceptorChain[i++];
      try {
        newConfig = onFulfilled(newConfig);
      } catch (error) {
        onRejected.call(this, error);
        break;
      }
    }
    try {