Seems like internally iron-query-params uses decodeUriComponent to decode query string into a dictionary.
encodeUri and decodeUri expect spaces to be encoded as %20, however when it comes to query string values (not the url part of the uri), then encoding spaces as + is also valid, but decodeUriComponent does not take this into account, despite this being a common encoding way in many libraries.
Seems like internally
iron-query-params
usesdecodeUriComponent
to decode query string into a dictionary.encodeUri and decodeUri expect spaces to be encoded as %20, however when it comes to query string values (not the url part of the uri), then encoding spaces as + is also valid, but decodeUriComponent does not take this into account, despite this being a common encoding way in many libraries.
Google closure libraries work around this by explicitly doing a .replace() in addition to calling decodeUriComponent. See http://www.hobsonassoc.com/scripts/closure/goog/docs/closure_goog_string_string.js.source.html#line425 for example.
Expected
Actual outcome
Browsers Affected
At least chrome. Probably all.