restify/node-restify

Additional content-type parameters are thrown away

Open

#1,589 opened on 2018年1月2日

GitHub で見る
 (1 comment) (0 reactions) (0 assignees)JavaScript (983 forks)batch import
BugCriticalGood First IssueHelp WantedNeeds Discussion

Repository metrics

Stars
 (10,695 stars)
PR merge metrics
 (平均マージ 3h 56m) (30d で 2 merged PRs)

説明

  • Used appropriate template for the issue type
  • Searched both open and closed issues for duplicates of this issue
  • Title adequately and concisely reflects the feature or the bug

Bug Report

Restify Version

6.3.4

Node.js Version

8.9.1

Expected behaviour

Given the following code, I would expect the content-type string I set to be used.

res.contentType = "text/plain; version=0.0.4; charset=utf-8"
res.send(...)

Should produce:

Content-Type: text/plain; version=0.0.4; charset=utf-8

For context, the content-type I'm using comes from: Prometheus client, Prometheus docs

Actual behaviour

Only the contents of the string before the first ; are used, resulting in:

Content-Type: text/plain

Repro case

var restify = require('restify');

const server = restify.createServer({
  name: 'myapp',
  version: '1.0.0'
});

server.get('/test', function (req, res, next) {
  res.contentType = "text/plain; version=0.0.4; charset=utf-8"
  res.send(200, "some text")
  return next();
});

server.listen(8080, function () {
  console.log('%s listening at %s', server.name, server.url);
});

Cause

The string is split here, throwing away the rest:

https://github.com/restify/node-restify/blob/74e0cf55fc452931215280741516d30555d76f7a/lib/response.js#L466

Are you willing and able to fix this?

Maybe :smile:

Assuming there isn't some reason this is intended behaviour, I can have a look at fixing.

コントリビューターガイド