Open Somebi opened 12 years ago
there are no rules really, these are behaviours that other libraries support but I would agree
@Somebi - Disagree.
If you do a plain ole form post with multiple input fields off the same name, the browser will concat these values into a list, it won't just take the last value.
I just accustomed to that behavior that param[]=value generates an array and param=value¶m=value takes the last one. I have created a small helper on client-side, which removes duplicated names.
@Somebi - I'm curious, which other query string parsers act that way? I'm interested in making sure this query string parser behaves nicely.
Well that was in php + apache.
@Marak This is also the behavior in Ruby/Rails... in fact I was trying to replicate in Express the good old trick of preceding a checkbox input with a hidden field of the same name so that when the checkbox isn't checked I received "0" and when it is I get "1"... but I was surprised to realize that instead I get ["0", "1"] when it's checked.
Just for information, the same question was asked here: http://stackoverflow.com/questions/1746507/authoritative-position-of-duplicate-http-get-query-keys
And they linked to a great document that lists different ways that it is handled: https://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf. Check page 9 in that document.
The most used is keep either the first or the last value, but there really are no consensus.
Perhaps add an option for choosing which of the 4 different methods to use?
The 4 being:
"1"
)"2"
)"1,2"
)["1", "2"]
)I Agree with fizker and Somebi. This is expected behavior in rails and php/apache.
Please make it a useful convention to get rid of the extra controller code required so far.
Looks like the same issue as: https://github.com/visionmedia/node-querystring/issues/9
Any forks with the "keep last" behavior?
This shouldn't be this way, the last param should be taken instead of uniting them into an array.