diff --git a/lib/middleware.js b/lib/middleware.js index 2afa2588f..4a2365a20 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -79,7 +79,9 @@ module.exports = function wrapper(context) { contentType += '; charset=UTF-8'; } - res.setHeader('Content-Type', contentType); + if (!res.getHeader('Content-Type')) { + res.setHeader('Content-Type', contentType); + } res.setHeader('Content-Length', content.length); const { headers } = context.options; diff --git a/test/tests/server.js b/test/tests/server.js index 90f9e6565..36f7cd0fc 100644 --- a/test/tests/server.js +++ b/test/tests/server.js @@ -259,6 +259,27 @@ describe('Server', () => { }); }); + describe('custom Content-Type', () => { + before((done) => { + app = express(); + const compiler = webpack(webpackConfig); + instance = middleware(compiler, { + stats: 'errors-only', + logLevel, + headers: { 'Content-Type': 'application/octet-stream' } + }); + app.use(instance); + listen = listenShorthand(done); + }); + after(close); + + it('Do not guess mime type if Content-Type header is found ', (done) => { + request(app).get('/bundle.js') + .expect('Content-Type', 'application/octet-stream') + .expect(200, done); + }); + }); + describe('custom mimeTypes', () => { before((done) => { app = express();