httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Josh Wyatt <Josh.Wy...@hcssystems.com>
Subject Re: Reverse Proxy munges chars
Date Mon, 03 Jun 2002 14:53:08 GMT
Boyle Owen wrote:
> 
> >Hi All,
> >I'm trying to use Apache as a reverse proxy, allowing users to view a
> >site through the proxy:
> >ProxyPass /
> >http://remote_server.otherdomain.com:7777/servlet?config=true
> >
> >It almost works.  When apache requests the new URL however, it is
> >replacing the ? with %3F, which is failing on
> >remote_server.otherdomain.com .
> >
> >How do I make apache pass the "?" as-is, instead of converting it to
> >"%3F" before requesting it from remote_server.otherdomain.com?
> 
> I'm not sure you can do this. Characters after the "?" are not part of the URL. Since
there is nothing conditional on the LHS of the mapping, why not make "config=true" the default
in your servlet then you can use the simpler rule:
> 
>         ProxyPass / http://remote_server.otherdomain.com:7777/servlet
> 
> Rgds,
> 
> Owen Boyle

Hi Owen,

Thanks for the reply.  I don't believe your claim about the query string
not being part of the URL is true.

Check out RFC 1738, "Uniform Resource Locators" (
http://www.w3.org/Addressing/rfc1738.txt ).  Specifically, section 3.3
[1].

I don't understand why Apache is munging the ? into %3F.  This seems
mostly broken.  In fact, according to section 2.2 of the same RFC,
Apache is doing exactly the *wrong* thing[2] (note the last sentence).

Thanks,
Josh


[1]:
3.3. HTTP

   The HTTP URL scheme is used to designate Internet resources
   accessible using HTTP (HyperText Transfer Protocol).

   The HTTP protocol is specified elsewhere. This specification only
   describes the syntax of HTTP URLs.

   An HTTP URL takes the form:

      http://<host>:<port>/<path>?<searchpart>

   where <host> and <port> are as described in Section 3.1. If :<port>
   is omitted, the port defaults to 80.  No user name or password is
   allowed.  <path> is an HTTP selector, and <searchpart> is a query
   string. The <path> is optional, as is the <searchpart> and its
   preceding "?". If neither <path> nor <searchpart> is present, the "/"
   may also be omitted.

   Within the <path> and <searchpart> components, "/", ";", "?" are
   reserved.  The "/" character may be used within HTTP to designate a
   hierarchical structure.



[2]:
   Reserved: 

   Many URL schemes reserve certain characters for a special meaning:
   their appearance in the scheme-specific part of the URL has a
   designated semantics. If the character corresponding to an octet is
   reserved in a scheme, the octet must be encoded.  The characters ";",
   "/", "?", ":", "@", "=" and "&" are the characters which may be
   reserved for special meaning within a scheme. No other characters may
   be reserved within a scheme.

   Usually a URL has the same interpretation when an octet is
   represented by a character and when it encoded. However, this is not
   true for reserved characters: encoding a character reserved for a
   particular scheme may change the semantics of a URL.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message