在写CGI时,有时需要检测当前的连接是否是https的,比如设置cookie时。 可以通过HTTPS环境变量来检测,在http下该环境变量不存在,https下该环境变量值为 on。

my $https = (defined $ENV{HTTPS}) ? lc($ENV{HTTPS}) : 'off';

然后在设置cookie时即可这样做:

my $cookie = new CGI::Cookie( -name   => 'foo',
                              -value  => 'bar',
                              -secure => ($https eq 'on') ? 1 : 0
                             );