diff --git a/src/request-pipeline/file-request.js b/src/request-pipeline/file-request.js index 2aaf1f0d8..cc0305514 100644 --- a/src/request-pipeline/file-request.js +++ b/src/request-pipeline/file-request.js @@ -1,4 +1,5 @@ import fs from 'fs'; +import mime from 'mime'; import { EventEmitter } from 'events'; import { parse } from 'url'; @@ -16,13 +17,20 @@ export default class FileRequest extends EventEmitter { this.stream = fs.createReadStream(path); this.headers = {}; this.trailers = {}; + this.path = path; this.stream.on('open', () => this._onOpen()); this.stream.on('error', err => this._onOpen(err)); } _onOpen (err) { - this.statusCode = err ? 404 : 200; + if (!err) { + this.statusCode = 200; + this.headers['content-type'] = mime.lookup(this.path); + } + else + this.statusCode = 404; + this.emit('response', this); } diff --git a/test/server/data/images/icons.svg b/test/server/data/images/icons.svg new file mode 100644 index 000000000..7d08b116f --- /dev/null +++ b/test/server/data/images/icons.svg @@ -0,0 +1,10 @@ + + + + hamburger menu + + + + + + diff --git a/test/server/proxy-test.js b/test/server/proxy-test.js index d52d28d8a..93931f304 100644 --- a/test/server/proxy-test.js +++ b/test/server/proxy-test.js @@ -1013,6 +1013,22 @@ describe('Proxy', function () { done(); }); }); + + it('Should set the correct content-type header', function (done) { + session.id = 'sessionId'; + + var options = { + url: proxy.openSession('file:///' + getFileProtocolUrl('./data/images/icons.svg'), session), + headers: { + accept: 'image/webp,image/*,*/*;q=0.8' + } + }; + + request(options, function (err, res) { + expect(res.headers['content-type']).eql('image/svg+xml'); + done(); + }); + }); }); describe('Regression', function () {