2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-17 19:21:29 +03:00
Files
axios/lib/adapters
Ashish kumar choubey 0e8b6bbb54 fix(http): preserve user-supplied Host header when forwarding through a proxy (#10805) (#10822)
* fix(http): preserve user-supplied Host header when forwarding through a proxy (#10805)

When sending a request through a proxy with the http adapter, axios was
unconditionally rewriting `options.headers.host` to the request URL's
hostname:port, overwriting any Host header the caller had set in
`config.headers`.

This made it impossible to direct a proxy to a virtual host that differs
from the request URL — for example, hitting `127.0.0.1:4000` while
asking the proxy to treat the request as `example.com`.

Skip the default assignment when a Host header is already present
(case-insensitive match, since users may pass `host`, `Host`, or `HOST`).

* chore: apply some nitpicks

---------

Co-authored-by: Jason Saayman <jasonsaayman@gmail.com>
2026-04-30 18:33:33 +02:00
..

axios // adapters

The modules under adapters/ are modules that handle dispatching a request and settling a returned Promise once a response is received.

Example

var settle = require('../core/settle');

module.exports = function myAdapter(config) {
  // At this point:
  //  - config has been merged with defaults
  //  - request transformers have already run
  //  - request interceptors have already run

  // Make the request using config provided
  // Upon response settle the Promise

  return new Promise(function (resolve, reject) {
    var response = {
      data: responseData,
      status: request.status,
      statusText: request.statusText,
      headers: responseHeaders,
      config: config,
      request: request,
    };

    settle(resolve, reject, response);

    // From here:
    //  - response transformers will run
    //  - response interceptors will run
  });
};