Необходимо сделать POST-данные Actionscript через https - PullRequest
0 голосов
/ 21 января 2019

У меня есть приложение, которому недавно был выдан сертификат AWS (и помещен в ELB - я думаю, классика).

В веб-приложении есть Flash-ролик, который выполняет веб-вызовы (по тому же URL-адресу сайта) вЧтобы получить данные с использованием моделей Zend Framework 1.Страница в браузере не меняется.Когда я запрашиваю сайт через https, все импортированные элементы были переведены на протокол https, но при инициализации Flash-фильма он отправляет незащищенные запросы через http.

Он выполняет эти незащищенные запросы.когда я загружаю сайт по http или https.

Я упомянул AWS ELB по той причине, что мне сказали, что ELB выполняет какое-то перенаправление на порт 80.

Если язапросить сайт через https и немедленно выполнить print_r для массива $ _SERVER. Я вижу только HTTPS в качестве ключа REDIRECT и не вижу набора $ _SERVER ['HTTPS'], что я считаю важным.

В заключениеFlash-ролик внутри сайта Zend 1.12 выполняет запросы POST через http, и я бы хотел, чтобы он выполнял те же запросы, но через https.

Это очень старый Flash-фильм, и хотяЯ открыл файл swf с помощью декомпилятора, я не очень разбираюсь в ActionScript, чтобы увидеть, где (во многих файлах кода) я мог бы указать фильму вызывать https вместо http.

Моя теория состоит в том, что, когда сайт правильно работает как SSL / https, флэш-фильм может? Возможно?начните делать вызовы https, так как в данный момент «is» использует адресную строку URL, но также может случиться так, что случится перенаправление ELB, которое и его заклинит.

Обновление: я обнаружил (что, по-видимому,) свидетельство того, что если в указанном URL-адресе будет обнаружен https, то он затем сделает защищенные запросы ...

ФАЙЛ: mx.rpc.remoting.RemoteObject

mx_internal function initEndpoint() : void
  {
     var chan:Channel = null;
     if(endpoint != null)
     {
        if(endpoint.indexOf("https") == 0)
        {
           chan = new SecureAMFChannel(null,endpoint);
        }
        else
        {
           chan = new AMFChannel(null,endpoint);
        }
        channelSet = new ChannelSet();
        channelSet.addChannel(chan);
     }
  }

Спасибо, Адам

1 Ответ

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

Мне удалось восстановить исходный / старый неотредактированный файл Flash SWF, и вместо этого я изменил код PHP, который передает переменную и значение, называемое «конечная точка».

В приведенном мной примере кода он проверяетесли в конечной точке есть https (что я изначально думал, что она есть).

Я добавил код для изменения значения «конечной точки», когда HTTP_X_FORWARDED_PROTO был «https», пример ниже: ($ request-> getBaseUrl() взята из Zend Framework).

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
    $endpoint  = sprintf(
        '%s://%s%s',
        $_SERVER['HTTP_X_FORWARDED_PROTO'],
        $_SERVER['HTTP_HOST'],
        $request->getBaseUrl()
    );
} else {
       // use existing (and working) value for endpoint
}

При наличии этого кода ролик FLASH загружается и работает должным образом независимо от того, загружен сайт с http или с https

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...