File tree Expand file tree Collapse file tree 2 files changed +27
-6
lines changed Expand file tree Collapse file tree 2 files changed +27
-6
lines changed Original file line number Diff line number Diff line change @@ -198,11 +198,22 @@ function createRedirectDirectoryListener () {
198198
199199 // send redirect response
200200 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 )
206206 res . end ( doc )
207207 }
208208}
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 () {
469469 before ( function ( ) {
470470 server = createServer ( fixtures , null , function ( req , res ) {
471471 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+ }
472475 } )
473476 } )
474477
@@ -508,13 +511,20 @@ describe('serveStatic()', function () {
508511 . 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 )
509512 } )
510513
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 ) {
512515 request ( server )
513516 . get ( '/users' )
514517 . expect ( 'Content-Security-Policy' , "default-src 'none'" )
515518 . expect ( 301 , done )
516519 } )
517520
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+
518528 it ( 'should not redirect incorrectly' , function ( done ) {
519529 request ( server )
520530 . get ( '/' )
You can’t perform that action at this time.
0 commit comments