File tree 2 files changed +27
-6
lines changed
2 files changed +27
-6
lines changed Original file line number Diff line number Diff line change @@ -198,11 +198,22 @@ function createRedirectDirectoryListener () {
198
198
199
199
// send redirect response
200
200
res . statusCode = 301
201
- res . setHeader ( 'Content-Type' , 'text/html; charset=UTF-8' )
202
- res . setHeader ( 'Content-Length' , Buffer . byteLength ( doc ) )
203
- res . setHeader ( 'Content-Security-Policy' , "default-src 'none'" )
204
- res . setHeader ( 'X-Content-Type-Options' , 'nosniff' )
205
- res . setHeader ( 'Location' , loc )
201
+ setHeaderIfNotSet ( res , 'Content-Type' , 'text/html; charset=UTF-8' )
202
+ setHeaderIfNotSet ( res , 'Content-Length' , Buffer . byteLength ( doc ) )
203
+ setHeaderIfNotSet ( res , 'Content-Security-Policy' , "default-src 'none'" )
204
+ setHeaderIfNotSet ( res , 'X-Content-Type-Options' , 'nosniff' )
205
+ setHeaderIfNotSet ( res , 'Location' , loc )
206
206
res . end ( doc )
207
207
}
208
208
}
209
+
210
+ /**
211
+ * Set default value for the header only if it is not already set in the response
212
+ * @private
213
+ */
214
+
215
+ function setHeaderIfNotSet ( res , name , value ) {
216
+ if ( ! res . hasHeader ( name ) ) {
217
+ res . setHeader ( name , value )
218
+ }
219
+ }
Original file line number Diff line number Diff line change @@ -469,6 +469,9 @@ describe('serveStatic()', function () {
469
469
before ( function ( ) {
470
470
server = createServer ( fixtures , null , function ( req , res ) {
471
471
req . url = req . url . replace ( / \/ s n o w ( \/ | $ ) / , '/snow \u2603$1' )
472
+ if ( req . url . match ( / \/ p e t s / ) ) {
473
+ res . setHeader ( 'Content-Security-Policy' , "default-src 'self'" )
474
+ }
472
475
} )
473
476
} )
474
477
@@ -508,13 +511,20 @@ describe('serveStatic()', function () {
508
511
. expect ( 301 , / > R e d i r e c t i n g t o \/ s n o w % 2 0 % E 2 % 9 8 % 8 3 \/ < / , done )
509
512
} )
510
513
511
- it ( 'should respond with default Content-Security-Policy' , function ( done ) {
514
+ it ( 'should respond with default Content-Security-Policy when header is not set ' , function ( done ) {
512
515
request ( server )
513
516
. get ( '/users' )
514
517
. expect ( 'Content-Security-Policy' , "default-src 'none'" )
515
518
. expect ( 301 , done )
516
519
} )
517
520
521
+ it ( 'should respond with custom Content-Security-Policy when header is set' , function ( done ) {
522
+ request ( server )
523
+ . get ( '/pets' )
524
+ . expect ( 'Content-Security-Policy' , "default-src 'self'" )
525
+ . expect ( 301 , done )
526
+ } )
527
+
518
528
it ( 'should not redirect incorrectly' , function ( done ) {
519
529
request ( server )
520
530
. get ( '/' )
You can’t perform that action at this time.
0 commit comments