From 085974b7780bc58a428c324d76a7efab58ab70c9 Mon Sep 17 00:00:00 2001 From: asrar211 <113281948+asrar211@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:59:40 +0530 Subject: [PATCH 1/3] doc: add differences between Node.js fetch and standard Fetch API --- doc/api/globals.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/doc/api/globals.md b/doc/api/globals.md index 8ee20e0f099162..a31b86212d139b 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -531,6 +531,25 @@ changes: A browser-compatible implementation of the [`fetch()`][] function. +### Differences Between Node.js `fetch()` and Standard Fetch API + +Node.js's `fetch()` implementation is inspired by the Fetch API standard, but it includes several key differences: + +1. **`new Response(asyncIterable)`**: + - Node.js extends the standard `Response` constructor to accept an `asyncIterable` as its body. This allows streams and other async sources to be directly used. This feature is not part of the Fetch API in browsers. + +2. **Cookies Handling**: + - Unlike browsers, Node.js does not automatically manage cookies. In browsers, cookies are managed through the `Cookie` header and automatically sent with requests. In Node.js, you need to manually handle cookies, potentially using additional libraries like `node-fetch-cookie`. + +3. **No Forbidden Headers**: + - In browsers, there are several headers (e.g., `User-Agent`, `Referer`, `Host`) that are restricted from being modified by the developer for security reasons. In Node.js, these headers can be freely set, giving developers more control. + +4. **Environment-Specific Behavior**: + - Node.js operates outside of a browser environment and doesn't have access to browser-specific features like Service Workers, Cache API, etc. This can affect how requests and responses are handled in Node.js. + +For more details, refer to the [WHATWG Fetch Standard](https://fetch.spec.whatwg.org/) and the Node.js implementation notes. + + ## Class: `File`