-
Notifications
You must be signed in to change notification settings - Fork 30.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
http: add checkIsHttpToken check for header fields
Ref: nodejs/node-convergence-archive#13 This adds a new check for header and trailer fields names and method names to ensure that they conform to the HTTP token rule. If they do not, a `TypeError` is thrown. Previously this had an additional `strictMode` option that has been removed in favor of making the strict check the default (and only) behavior. Doc and test case are included. On the client-side ```javascript var http = require('http'); var url = require('url'); var p = url.parse('http://localhost:8888'); p.headers = {'testing 123': 123}; http.client(p, function(res) { }); // throws ``` On the server-side ```javascript var http = require('http'); var server = http.createServer(function(req,res) { res.setHeader('testing 123', 123); // throws res.end('...'); }); ``` Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: Trevor Norris <trevnorris@nodejs.org> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org> PR-URL: #2526
- Loading branch information
Showing
5 changed files
with
85 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
'use strict'; | ||
const common = require('../common'); | ||
const assert = require('assert'); | ||
const EventEmitter = require('events'); | ||
const http = require('http'); | ||
|
||
const ee = new EventEmitter(); | ||
var count = 3; | ||
|
||
const server = http.createServer(function(req, res) { | ||
assert.doesNotThrow(function() { | ||
res.setHeader('testing_123', 123); | ||
}); | ||
assert.throws(function() { | ||
res.setHeader('testing 123', 123); | ||
}, TypeError); | ||
res.end(''); | ||
}); | ||
server.listen(common.PORT, function() { | ||
|
||
http.get({port: common.PORT}, function() { | ||
ee.emit('done'); | ||
}); | ||
|
||
assert.throws( | ||
function() { | ||
var options = { | ||
port: common.PORT, | ||
headers: {'testing 123': 123} | ||
}; | ||
http.get(options, function() {}); | ||
}, | ||
function(err) { | ||
ee.emit('done'); | ||
if (err instanceof TypeError) return true; | ||
} | ||
); | ||
|
||
assert.doesNotThrow( | ||
function() { | ||
var options = { | ||
port: common.PORT, | ||
headers: {'testing_123': 123} | ||
}; | ||
http.get(options, function() { | ||
ee.emit('done'); | ||
}); | ||
}, TypeError | ||
); | ||
}); | ||
|
||
ee.on('done', function() { | ||
if (--count === 0) { | ||
server.close(); | ||
} | ||
}); |