Skip to content

Unicode character in dynamic segment crashes app #152

@joanniclaborde

Description

@joanniclaborde

Given this redirects.js file:

module.exports = [{
  from: /\/career(.*)/,
  to: 'http://site.com/career{0}'
}];

And this request: /careers/venture-capital-funding-increased-in-2010-%E2%80%93-but-still-remains-well-below-2007-levels/

This error happens:

TypeError: The header content contains invalid characters
  File "_http_outgoing.js", line 363, in ServerResponse.OutgoingMessage.setHeader
  File "/app/node_modules/solidus/node_modules/express/node_modules/connect/lib/patch.js", line 59, in ServerResponse.res.setHeader
    return setHeader.call(this, field, val);
  File "/app/node_modules/solidus/node_modules/express/lib/response.js", line 518, in ServerResponse.res.set.res.header
    this.setHeader(field, val);
  File "/app/node_modules/solidus/node_modules/express/lib/response.js", line 651, in ServerResponse.res.location
    this.set('Location', url);
  File "/app/node_modules/solidus/node_modules/express/lib/response.js", line 693, in ServerResponse.res.redirect
    this.location(url);
  File "/app/node_modules/solidus/lib/redirect.js", line 41, in null.<anonymous>
    res.redirect( status, utils.expandVariables(url, req.params) );
  File "/app/node_modules/solidus/node_modules/express/lib/router/index.js", line 161, in callbacks
    if (fn.length < 4) return fn(req, res, callbacks);
  File "/app/node_modules/solidus/node_modules/express/lib/router/index.js", line 135, in param
    callbacks();
  File "/app/node_modules/solidus/node_modules/express/lib/router/index.js", line 142, in pass
    param(err);
  File "/app/node_modules/solidus/node_modules/express/lib/router/index.js", line 170, in Router._dispatch
    })(0);
  File "/app/node_modules/solidus/node_modules/express/lib/router/index.js", line 33, in Object.router
    self._dispatch(req, res, next);
  File "/app/node_modules/solidus/node_modules/express/node_modules/connect/lib/proto.js", line 190, in next
    layer.handle(req, res, next);
  File "/app/node_modules/solidus/lib/server.js", line 136, in null.<anonymous>
    next();
  File "/app/node_modules/solidus/node_modules/continuation-local-storage/context.js", line 48, in Namespace.run
    fn(context);
  File "/app/node_modules/solidus/lib/server.js", line 134, in Object.handle
    solidus_server.session.run(function() {
  File "/app/node_modules/solidus/node_modules/express/node_modules/connect/lib/proto.js", line 190, in next
    layer.handle(req, res, next);
  File "/app/node_modules/solidus/node_modules/express/node_modules/connect/lib/middleware/static.js", line 60, in resume
    next();
  File "/app/node_modules/solidus/node_modules/express/node_modules/connect/lib/middleware/static.js", line 73, in SendStream.error
    if (404 == err.status) return resume();
  File "events.js", line 77, in emitOne
  File "events.js", line 169, in SendStream.emit
  File "/app/node_modules/solidus/node_modules/express/node_modules/send/lib/send.js", line 147, in SendStream.error
    if (this.listeners('error').length) return this.emit('error', err);
  File "/app/node_modules/solidus/node_modules/express/node_modules/send/lib/send.js", line 248, in SendStream.onStatError
    if (~notfound.indexOf(err.code)) return this.error(404, err);
  File "/app/node_modules/solidus/node_modules/express/node_modules/send/lib/send.js", line 320, in null.<anonymous>
    if (err) return self.onStatError(err);
  File "/app/node_modules/solidus/node_modules/continuation-local-storage/node_modules/async-listener/glue.js", line 188, in null.<anonymous>
    var returned = original.apply(this, arguments);
  File "fs.js", line 82, in FSReqWrap.oncomplete

The redirect URL should contain encoded characters. Also, does this happen with resources too?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions