Как кодировать в Perl CGI, чтобы включить действие с https, а не с http - PullRequest
0 голосов
/ 14 января 2019

У меня есть сервер за балансировщиком нагрузки. LB переводит из https в http, поэтому веб-сервер видит только http.

У меня есть Perl-скрипт, который использует стандарт CGI для генерации формы ввода с использованием

start_form( -action=>url())

Сейчас URL-адрес в HTML-адресе указывает на http-версию URL-адреса, а не на https. Какой самый чистый способ заставить его всегда использовать https (если https используется пользователем)?

Я пробовал "-rewrite" как 0 и 1, но это не имело значения.

1 Ответ

0 голосов
/ 14 января 2019

По крайней мере в соответствии с документацией и кодом CGI.pm, url() и url( full => 1) должны оба возвращать https://, если ваш CGI-скрипт обслуживался с URL-адреса https://. Если балансировщик нагрузки удаляет https и не предоставляет соответствующие заголовки, вы можете установить $ENV{HTTPS} на ON, чтобы подделать это в своем скрипте самостоятельно:

#!perl
use strict;
use warnings;

use CGI qw(url);

$ENV{HTTPS} = 'ON';
print url();

Смотри также

CGI

...