Hello,

For context, I'm currently deploying/demoing a Catalyst app on a client machine where it uses a contrived base url scheme to work around a restrictive firewall setup. To be specific, the Firewall blocks all ports except port 80 (plus a few admin ports like SSH etc) and I want to run through HTTPS, so I've currently got the machine's Apache running HTTPS through port 80 rather than 443.

(My development machine isn't contrived at all, so no issue there.)

The contrived url for my Catalyst app looks like this:

  https://example.com:80/MyApp/some/page

My app initially works fine here using the FastCGI or CGI server script and the urls produced by uri_for() are mostly what is needed here but not quite.

An invocation of:

  https://example.com:80/MyApp/some/page

... would have page urls going to the likes of:

  https://example.com/MyApp/other/page

... which is correct except for the missing :80, because the result alone implies port 443 which isn't correct here.

Now from running the first url with "?dump_info=1" shows that the FastCGI/CGI program, namely Catalyst, *does* receive the necessary information to produce correct base urls.

Here's a relevant subset of "Request" details from dump_info:

bless({
  base => bless(do{\(my $o = "https://example.com/MyApp/";)}, "URI::https"),
  headers => bless({
                        "host" => "example.com:80",
                        "https" => "on",
                      }, "HTTP::Headers"),
uri => bless(do{\(my $o = "https://example.com/MyApp/some/page?dump_info=1";)}, "URI::https"),
}, "Catalyst::Request")

The "base" and "uri" reflect the incorrect output, but the "headers" records the fact that both port 80 was invoked and https is on. Using the latter 2 bits of information, Catalyst should be able to construct "https://example.com:80"; urls.

Therefore, can anyone tell me how to configure Catalyst so that it builds the urls I need, or alternately where in the Catalyst source I should look in order to create a patch to enable this?

Ideally this added smarts could make it into a CPAN release, if code changes are needed, but I would like to have this working quite soon, so if I knew what to patch in the meantime to get this to work, I would appreciate it.

Undoubtedly, Catalyst should simply handle this situation, but I'm not surprised that it doesn't yet, considering this is an edge case that the developers may not have encountered before.

Thank you. -- Darren Duncan

_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to