Comments (4)
The way the send
module works, it is just sync. Besides, the Content-Length
header at this time is never the gzip'd length, always that from the disk, as this module and below does not gzip compression, so I'm not sure why you'd have to worry about getting the gzip'd length.
But even then, it looks like you just want to do something using the file's stat
, which is actually the third argument. Could you do this?
setHeaders: function(res, path, stat) {
res.set('X-Raw-Length', stat.size)
}
from serve-static.
I use the compression
module and the Content-Length
is the gzip'd length. Also generally Content-Length
wouldn't be reliable for my use case because some files would be streamed (Transfer-Encoding:chunked
).
But this works perfectly! Thanks for the super quick reply. I'll update the documentation to add the stat
arg.
from serve-static.
Ah. I took a closer look into the send
module and see that it doesn't even set the Content-Length
until after the setHeaders
anyway (this isn't really an issue, because, really, it's for setting headers in a particular pipeline, not really for altering headers).
Ans the reason it's sync instead of async is because send
is a stream and this function is run as a EE listener, and EE listeners are only sync in Node.js, there is no async version of listeners, haha.
But thanks for the docs contribution, and I'm glad we could solve your problem with something that was just accidentally not documented (it's documented all the way down in send
module)!
from serve-static.
Happy to help. These projects are getting even better than last time I used them. You seem to run a tight ship :)
from serve-static.
Related Issues (20)
- how to prevent a file from being served HOT 2
- Add option to remove trailing slashes, as opposed to adding them HOT 9
- Support gzip static serving HOT 8
- Please add types for typescript HOT 1
- FR: Ability to always call next() HOT 8
- Extensions vs Directory HOT 1
- feature request: enable mapping url to a different file via a callback HOT 1
- Question: Is it possible to access the origin from setHeaders()? HOT 4
- Issue with Example Code HOT 4
- Make 'immutable' cache-control value HTTP/3 QPACK compatible HOT 1
- Use seconds instead of milliseconds for maxAge HOT 2
- 404 returned insted of 403 when uisng the dotfiles with "deny option" HOT 8
- setHeaders: need to access req.query HOT 2
- Corrupted file served if file is changed during serving. HOT 4
- Omitted `Content-Type` header when passing index file HOT 2
- Angular 13 SSR serve is failing with error - TypeError: Right-hand side of 'instanceof' is not an object HOT 5
- How to disable range requests in Next.js ? HOT 1
- Cannot use namespace 'HttpError' as a type HOT 2
- When the index is set to false, requests ending with / are being served with the content type header set to application/octet-stream instead of actual file's content type HOT 4
- error TS2688: Cannot find type definition file for 'mime'. 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 serve-static.