2011-03-07 39 views
6

来识别协议(http与https)我正在编辑一个Perl CGI应用程序,它在HTTPS下运行时执行特殊处理。如何使用Perl的CGI.pal

现在,我试图通过手动寻找的“https://”,以检测它在请求URI:

my $is_secure = $cgi->request_uri =~ m{^https://}; 

是否有这样做的稍微更清洁的方式?

回答

10

CGI.pm具有,根据the documentation一个https()方法:

上存在的HTTPS环境变量操作时SSL协议生效。可以用来确定SSL是否打开。

这可能是你在找什么。如果没有参数,它将返回一个HTTPS环境变量列表。

+0

我知道这是一个老问题,但它是与我正在寻找的东西有关。不幸的是,你链接到的文档并没有告诉你如何去做,只是可以做到。 – Justin 2014-11-10 14:58:47

1

使用$ ENV { 'HTTPS'}

my $is_secure = $ENV{'HTTPS'}; 

或许更好,只需使用$ ENV { 'HTTPS'},而不是$ is_secure

+1

我希望大多数主流服务器都有一些环境变量,即使它不是这样。 – 2014-11-10 18:41:48