In rewrite.py, the default pattern for validating args in the request URL is
args_match=r'([\w@ =-]|(?<=[\w@ -])[.])*$'
while the default pattern for files [file names?} is
file_match = r'([-+=@$%\w]|(?<=[-+=@$%\w])[./])*$' # legal static subpath
Note that
file_match includes '%', but
args_match does not. '%' is used for URL-escaping characters outside the ASCII range.
I have a controller path that goes
.../app1/default/func1, and in normal usage I'm appending a (string) value being passed to func1.
That is, .
../default/func1/somevalue. When there's an escaped character, the rewrite code seems to be throwing HTTP 400 due to failing to match with
args_match. Why would this behavior be chosen?
By contrast, the client using (app2) func2 uses a '?' to introduce the arg (
.../app2/default/func2?somevalue2), and that is accepted with escaped chars.
My routes.py uses the "simple router" (around line 104 of the sample), where BASE is set to a dict of default_application and root_static. Can I overwrite args_match in this? app1 is the default_application.
/dps