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/

Reply via email to