Comments (9)
This was caused by fd66cf0 which exposed the issue. Our only choice is to move towards private properties I think.
from undici.
just use Object.fromEntries
.
// Comment out this comment and have the latest undici installed just to verify it's still
// present in latest Undici, but for the test you can use the global Undici bundled in Node
// import { fetch } from "undici";
{
const baseHeaders = { "x-foo": "bar" };
const requestHeaders = new Headers({ "Content-Type": "application/json" });
const headers = {
...baseHeaders,
...Object.fromEntries(requestHeaders),
};
console.log("Result", headers);
await fetch("https://google.com", {
method: "POST",
headers,
});
}
from undici.
From a quick look at the behaviors in browsers, I think that the correct implementation is:
const baseHeaders = { "x-foo": "bar" };
const requestHeaders = new Headers({ "Content-Type": "application/json" });
const headers = {
...baseHeaders,
...Object.fromEntries(requestHeaders),
};
Note that the following does not work in browsers either:
const baseHeaders = { "x-foo": "bar" };
const requestHeaders = new Headers({ "Content-Type": "application/json" });
const headers = {
...baseHeaders,
...requestHeaders,
};
console.log("Result", headers);
It will result in not having Content-Type
in headers
object.
Having said that, I think it should not crash but works as expected & similarly to browsers.
@KhafraDev ping
from undici.
@mcollina, yeah, you are right. Headers instance itself won't spread, it will return an empty object. But neither will it throw, so that behavior is unexpected although useful as it lets the user know they aren't doing anything (the error is not hinting at that, though).
from undici.
Reported tangentially by MSW users as well.
from undici.
You are using the spread operator incorrectly.
In Headers
you need to use it with arrays, not objects.
from undici.
Yes I know I can do that, (and I did work around the issue in pingdotgg/uploadthing#813) - but that's working around the issue that the behavior changed in a minor Node.js release (havent tracked down what exact Undici release the behavior changed in)
from undici.
It will result in not having Content-Type in headers object
Oh wow I didnt even realize that. Was too focused looking at the Symbols xD
from undici.
Checked some other runtimes:
from undici.
Related Issues (20)
- undici/types/index.d.ts:21:8: Type error TS1192: Module '"[email protected]/node_modules/undici/types/interceptors"' has no default export HOT 6
- Node 22.3.0 regression: undici sends invalid origin header in some cases HOT 2
- fetch arrayBuffer() leaks random data from process memory HOT 18
- build: husky install is deprecated HOT 1
- Ability to externalize WASM was broken HOT 11
- Measure request latency HOT 3
- dns round-robin interceptor + cache HOT 3
- async dispatch handler helper
- Cannot convert argument to a ByteString because the character at index 46 has a value of 65286 which is greater than 255 HOT 2
- Undici.Request and AbortController doesn't work well HOT 22
- The RetryHandler receives a duplicate body when the server does not support Range requests. HOT 11
- `Dispatcher.compose` doesn't return a true dispatcher HOT 9
- Back-pressure doesn't work with sub dispatches
- Add generic type for opaque object for stream() and pipeline() HOT 2
- v7 HOT 5
- Feature: Rewrite ProxyAgent HOT 4
- Does not set TLS `servername` to the value of the `Host` header HOT 9
- Significant Slowdown in Requests When Using ProxyAgent HOT 3
- inconsistent setDate(0) behaviour between windows and linux HOT 1
- Nightly tests are failing HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from undici.