As of 2.x release
-
Topics such as Cross-Origin, Content Security Policy, Mixed Content, Service Workers are ignored, given our server-side context.
-
URL input must be an absolute URL, using either
http
orhttps
as scheme. -
On the upside, there are no forbidden headers.
-
res.url
contains the final url when following redirects. -
For convenience,
res.body
is a Node.js Readable stream, so decoding can be handled independently. -
Similarly,
req.body
can either benull
, a string, a buffer or a Readable stream. -
Also, you can handle rejected fetch requests through checking
err.type
anderr.code
. See ERROR-HANDLING.md for more info. -
Only support
res.text()
,res.json()
,res.blob()
,res.arraybuffer()
,res.buffer()
-
There is currently no built-in caching, as server-side caching varies by use-cases.
-
Current implementation lacks server-side cookie store, you will need to extract
Set-Cookie
headers manually. -
If you are using
res.clone()
and writing an isomorphic app, note that stream on Node.js have a smaller internal buffer size (16Kb, akahighWaterMark
) from client-side browsers (>1Mb, not consistent across browsers). -
Because node.js stream doesn't expose a disturbed property like Stream spec, using a consumed stream for
new Response(body)
will not setbodyUsed
flag correctly.