#connect-cleaner Simple url sanitizer for connect and express.
Redirects trailing slash urls, normalizes letter case differences and cleans garbage from your URLs.
Inspired by connect-slashes.
##Installation
$ npm install connect-cleaner
##Usage
var connect = require('connect');
var cleaner = require('connect-cleaner');
var config = require('config');
connect()
.use(connect.responseTime())
.use(cleaner(302)) // ideally, put cleaner as earlier as possible
.use(yourApp(config))
.listen(8080);
By default, cleaner
responses with "fast 400"* on requests like //?/?///
. Optionaly clear
takes one argument which can be an Object
(options) or Number
(redirect code).
* By "fast 400" I mean that cleaner responses with unstyled 400 without body as soon as possible
##Options
-
add <false>
- determines ifcleaner
should add trailing slash. Iftrue
setsclean
tofalse
. -
clean <true>
- determines ifcleaner
should clean trailing slash(es). Can be overrided byadd
andsanitize
options. -
code <301>
- determines redirect code. -
normilize <false>
- determines ifcleaner
should normilize differences in letter cases inpathname
. It's important to note thatcleaner
only fixes letter casing onpathname
-querystring
not affected. -
sanitize <false>
- determines ifclaener
should clean (sanitize) garbage in url (includes[/?&=]
, also setsclean
tofalse
).
##Post-initialization mutablity
var instance = cleaner(); // We need access to middleware for later configuring
app.use(instance);
// Later...
instance.set(code, 302);
// or
insatnce.set({ add: true, sanitize: true });
// Also we have more generic acces to `_options` object
instance.get('code'); // => 302
// or
instance.get();
/* =>
{
add: true,
clean: false,
code: 302,
sanitize: true,
normalize: false
}
*/
##Examples
Options | Request | Response | Code |
---|---|---|---|
(default) | ///?/?/? |
- | 400 |
(default) | /Users//?foo=Bar&age=21& |
/Users?foo=Bar&age=21& |
301 |
code: 302 |
/Users//?foo=Bar&age=21& |
/Users?foo=Bar&age=21& |
302 |
normalize, code: 302 |
/Users//?foo=Bar&age=21& |
/users?foo=Bar&age=21& |
302 |
sanitize, code: 302 |
/Users//?foo=Bar&age=21& |
/Users?foo=Bar&age=21 |
302 |
normalize , sanitize, code: 302
|
/Users//?foo=Bar&age=21& |
/users?foo=Bar&age=21 |
302 |
(default) | /users?foo=Bar&age=21 |
- | Pass thrue, url is fine |
add |
/users?foo=Bar&age=21 |
/users/?foo=Bar&age=21 |
301 |
##License MIT