代码之家  ›  专栏  ›  技术社区  ›  D Mac

如何在PerlCGI中编写代码,以包括使用HTTPS而不是HTTP的操作

  •  2
  • D Mac  · 技术社区  · 6 年前

    我在负载均衡器后面有一个服务器。LB将HTTPS转换为HTTP,因此Web服务器只看到HTTP。

    我有一个Perl脚本,它使用CGI标准生成一个输入表单

    start_form( -action=>url())
    

    现在,HTML中的URL指向的是URL的HTTP版本,而不是HTTPS。让它始终使用https(如果用户正在使用https)最干净的方法是什么?

    我试过将“重写”为0和1,但这并没有造成什么不同。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Corion    6 年前

    至少根据文件和规范 CGI.pm , url() url( full => 1) 两者都应该返回 https:// 如果你的CGI脚本是从 http:// 网址。如果负载均衡器剥离了HTTPS并且没有提供适当的头,则可以设置 $ENV{HTTPS} ON 在你的剧本里你自己伪造:

    #!perl
    use strict;
    use warnings;
    
    use CGI qw(url);
    
    $ENV{HTTPS} = 'ON';
    print url();
    

    也见

    CGI