[racket] Preventing get-impure-port from url-encoding the query

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Thu Jul 11 20:21:29 EDT 2013

Even and I spoke offline, and although I don't have all the details (and 
something sounds odd), it currently sounds like the core problem here is 
that some server program (perhaps not stock Shibboleth itself) is 
unusually non-compliant in its handling of URLs.[*]

Although the problem here does not appear to be in Racket, it wouldn't 
hurt to modify "net/url" to permit a verbatim HTTP request path and 
query components to be specified as an optional string/bytes argument, 
separate from the URL argument.  (Alternatively, you could do less 
aggressive "%"-encoding of the query and fragment parts of the URL than 
you do for the path, although that risks breaking *different* broken 
server software.  And you shouldn't *have* to be less aggressive.)

[*] I have implemented support for around a dozen different 
single-signon Web authentication systems (lots of organizations do it 
differently, despite SAML), incidental to my consulting practice, and 
usually I only run into this kind of quirky behavior when dealing with 
HTTP proxies/firewalls, not with IdPs or other authentication servers.

Neil


Posted on the users mailing list.