On Aug 28, 2007, at 6:34 AM, Charlie Garrison wrote:
Good evening,
I upgraded Catalyst-Runtime from 5.7007 to 5.7010 yesterday; and
that seems to be the cause of this problem. But it could have been
there before and it was never reported by our users.
When users try to login <https://www.resultsplus.com.au/progs/>,
the following error is returned:
Bad Request
Your browser sent a request that this server could not understand.
Client sent malformed Host header
Apache/1.3.29 Server at www.resultsplus.com.au:443:8627 Port 443
Catalyst is doing a redirect to the login page using:
$c->response->redirect($c->uri_for('/login'));
As far as I can tell, that is when :443 is being added to the URL.
The above error makes sense in the context of frontend/backend
apache with rewrite rules.
RewriteRule ^/login(.*)$ http://%{HTTP_HOST}:8627/progs/login
$1 [P]
RewriteRule ^/progs/(.*)$ http://%{HTTP_HOST}:8627/progs/$1 [P]
I'm redirecting to and using different ports on the backend to
identify secure connections, and then setting ENV as:
PerlSetEnv HTTPS "on"
So, assuming I'm reaching the correct conclusion (that uri_for is
the culprit), how do I prevent it from adding :443 to the URL?
I've fixed it temporarily using a rewrite rule with hard-coded
value in place of %{HTTP_HOST}, but the :443 port is being added to
every URL created with uri_for throughout the site.
I've had a look at Catalyst::uri_for sub and it seems to be getting
the 'base' from the URI object. But I'm running short of debug fu
and would appreciate some assistance at this point.
I've just checked in a fix for this bug, port 443 should no longer be
added to base/uri.
http://dev.catalystframework.org/svnweb/Catalyst/revision/?rev=6895
-Andy
_______________________________________________
List: Catalyst@lists.rawmode.org
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
Dev site: http://dev.catalyst.perl.org/