51 lines
1.9 KiB
Plaintext
51 lines
1.9 KiB
Plaintext
---
|
|
title: Proxy HTTP requests using fetch()
|
|
sidebarTitle: Proxy HTTP requests using fetch()
|
|
mode: center
|
|
---
|
|
|
|
In Bun, `fetch` supports sending requests through an HTTP or HTTPS proxy. Use it on corporate networks or when a request must come from a specific IP address.
|
|
|
|
```ts proxy.ts icon="/icons/typescript.svg"
|
|
await fetch("https://example.com", {
|
|
// The URL of the proxy server
|
|
proxy: "https://username:[email protected]:8080",
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
The `proxy` option can be a URL string, a `URL` instance, or an object with `url` (a string or a `URL`) and optional `headers`. The URL can include the username and password if the proxy requires authentication. It can be `http://` or `https://`.
|
|
|
|
---
|
|
|
|
## Custom proxy headers
|
|
|
|
To send custom headers to the proxy server (for proxy authentication tokens or custom routing), use the object format:
|
|
|
|
```ts proxy-headers.ts icon="/icons/typescript.svg"
|
|
await fetch("https://example.com", {
|
|
proxy: {
|
|
url: "https://proxy.example.com:8080",
|
|
headers: {
|
|
"Proxy-Authorization": "Bearer my-token",
|
|
"X-Proxy-Region": "us-east-1",
|
|
},
|
|
},
|
|
});
|
|
```
|
|
|
|
The `headers` property accepts a plain object or a `Headers` instance. Bun sends these headers directly to the proxy server in `CONNECT` requests (for HTTPS targets) or in the proxy request (for HTTP targets).
|
|
|
|
If you provide a `Proxy-Authorization` header, it overrides any credentials in the proxy URL.
|
|
|
|
---
|
|
|
|
## Environment variables
|
|
|
|
To use the same proxy for all requests, set the `$HTTP_PROXY` and `$HTTPS_PROXY` environment variables to the proxy URL. Bun uses `$HTTP_PROXY` only for requests to `http://` URLs and `$HTTPS_PROXY` only for requests to `https://` URLs, so set both to proxy every request.
|
|
|
|
```sh terminal icon="terminal"
|
|
HTTP_PROXY=https://username:[email protected]:8080 HTTPS_PROXY=https://username:[email protected]:8080 bun run index.ts
|
|
```
|