File tree 3 files changed +28
-8
lines changed 3 files changed +28
-8
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ unreleased
2
2
==========
3
3
4
4
* Fix emitted 416 error missing headers property
5
+ * Limit the headers removed for 304 response
5
6
* deps: depd@2.0.0
6
7
- Replace internal ` eval ` usage with ` Function ` constructor
7
8
- Use instance methods on ` process ` to check for listeners
Original file line number Diff line number Diff line change @@ -347,21 +347,19 @@ SendStream.prototype.isPreconditionFailure = function isPreconditionFailure () {
347
347
}
348
348
349
349
/**
350
- * Strip content-* header fields.
350
+ * Strip various content header fields for a change in entity .
351
351
*
352
352
* @private
353
353
*/
354
354
355
355
SendStream . prototype . removeContentHeaderFields = function removeContentHeaderFields ( ) {
356
356
var res = this . res
357
- var headers = getHeaderNames ( res )
358
357
359
- for ( var i = 0 ; i < headers . length ; i ++ ) {
360
- var header = headers [ i ]
361
- if ( header . substr ( 0 , 8 ) === 'content-' && header !== 'content-location' ) {
362
- res . removeHeader ( header )
363
- }
364
- }
358
+ res . removeHeader ( 'Content-Encoding' )
359
+ res . removeHeader ( 'Content-Language' )
360
+ res . removeHeader ( 'Content-Length' )
361
+ res . removeHeader ( 'Content-Range' )
362
+ res . removeHeader ( 'Content-Type' )
365
363
}
366
364
367
365
/**
Original file line number Diff line number Diff line change @@ -440,6 +440,27 @@ describe('send(file).pipe(res)', function () {
440
440
} )
441
441
} )
442
442
443
+ it ( 'should not remove all Content-* headers' , function ( done ) {
444
+ var server = createServer ( { root : fixtures } , function ( req , res ) {
445
+ res . setHeader ( 'Content-Location' , 'http://localhost/name.txt' )
446
+ res . setHeader ( 'Content-Security-Policy' , 'default-src \'self\'' )
447
+ } )
448
+
449
+ request ( server )
450
+ . get ( '/name.txt' )
451
+ . expect ( 200 , function ( err , res ) {
452
+ if ( err ) return done ( err )
453
+ request ( server )
454
+ . get ( '/name.txt' )
455
+ . set ( 'If-None-Match' , res . headers . etag )
456
+ . expect ( shouldNotHaveHeader ( 'Content-Length' ) )
457
+ . expect ( shouldNotHaveHeader ( 'Content-Type' ) )
458
+ . expect ( 'Content-Location' , 'http://localhost/name.txt' )
459
+ . expect ( 'Content-Security-Policy' , 'default-src \'self\'' )
460
+ . expect ( 304 , done )
461
+ } )
462
+ } )
463
+
443
464
describe ( 'where "If-Match" is set' , function ( ) {
444
465
it ( 'should respond with 200 when "*"' , function ( done ) {
445
466
request ( app )
You can’t perform that action at this time.
0 commit comments