diff options
author | James M Snell <jasnell@gmail.com> | 2015-08-24 11:58:48 -0700 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2015-09-25 08:37:57 -0700 |
commit | 6192c9892f3eddf165a4826ba917ea08ea627ea2 (patch) | |
tree | cb93bd627c3c199ab92a2929eb31de5202081534 /test/parallel/test-http-invalidheaderfield.js | |
parent | b50e89e01f36c4abd048a194991f2ce88725773a (diff) | |
download | android-node-v8-6192c9892f3eddf165a4826ba917ea08ea627ea2.tar.gz android-node-v8-6192c9892f3eddf165a4826ba917ea08ea627ea2.tar.bz2 android-node-v8-6192c9892f3eddf165a4826ba917ea08ea627ea2.zip |
http: add checkIsHttpToken check for header fields
Ref: https://github.com/nodejs/node-convergence-archive/issues/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: https://github.com/nodejs/node/pull/2526
Diffstat (limited to 'test/parallel/test-http-invalidheaderfield.js')
-rw-r--r-- | test/parallel/test-http-invalidheaderfield.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/test/parallel/test-http-invalidheaderfield.js b/test/parallel/test-http-invalidheaderfield.js new file mode 100644 index 0000000000..7e130e50d8 --- /dev/null +++ b/test/parallel/test-http-invalidheaderfield.js @@ -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(); + } +}); |