fetch: Enable fetch via file URL (under flag)
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 7.7k
- Forks
- 880
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 68
Description
What is the problem this feature will solve?
When trying to perform a fetch request to a file:// schema, fetch fails with the following error:
cause: Error: not implemented... yet...
Looking at the WHATWG specs, it seems like there is no specification for this schema:
"file"
For now, unfortunate as it is, file: URLs are left as an exercise for the reader.When in doubt, return a network error.
and undici follows this behaviour correctly.
There are many use cases where fetching a local file using fetch would be handy, and this is particularly true for WebAssembly modules.
Right now, libraries like wasm-pack (a Rust to WASM lib) have to perform different builds for browsers and Node.js, since Node.js is not able to fetch the compiled WASM binary from the file system.
Other runtimes and browsers handle this without any particular problem, but except for Deno (which has its own security model), I do understand the security implications of fetching a file from the filesystem.
What is the feature you are proposing to solve the problem?
With the introduction of the new Node.js permission APIs, we could enable fetch on the file system under an option, such as allowFileUrl: true.
That way, the user could explicitly enable fetching a local file, acknowledging the security implications that come with it.
About the actual implementation, I see that WinterCG also hasn't specified fetch for URLs with a file:// schema: https://fetch.spec.wintercg.org. Therefore, I'd also ask if that's the case to discuss how actually to implement this - if interesting for anyone.
What alternatives have you considered?
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in lib/fetch/index.js at the file URL handling referenced by the issue, then review the Node.js permission API and the WHATWG and WinterCG links. The implementation details and security model still need agreement in the discussion; done would require an agreed opt-in behavior plus tests for permitted and rejected file URLs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js
- Domain
- api, backend, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100