需要通过https制作动作脚本POST数据

时间:2019-01-21 18:37:57

标签: ssl zend-framework actionscript

我有一个应用程序,该应用程序最近获得了AWS证书(放在ELB中,我认为是经典的)。

该Web应用程序具有Flash电影,该电影可以进行Web调用(到同一站点URL),以便使用Zend Framework 1模型获取数据。浏览器中的页面不会更改。 当我通过https请求网站时,所有导入的项目都已更改为https协议,但是在Flash电影初始化时,它将通过http发出非安全请求。

当我通过http或https加载网站时,它会发出这些不安全的请求。

之所以提到AWS ELB,是因为有人告诉我ELB正在进行某种重定向到端口80的操作。

如果我通过https请求该站点,并立即在$ _SERVER数组上执行print_r,我只会看到HTTPS作为REDIRECT密钥,而没有看到$ _SERVER ['HTTPS']设置,我认为这很重要。

总而言之,在Zend 1.12站点内的Flash电影正在通过http发出POST请求,我希望它通过https发出相同的请求。

这是一部非常古老的Flash电影,尽管我已经用反编译器打开了swf文件,但我对ActionScript知之甚少,无法看到我可以在哪里指示电影(在许多代码文件中)呼叫https而不是http。

我的理论是,当网站以SSL / https正常运行时,Flash电影可能吗?开始拨打https呼叫,因为此刻使用地址栏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 :(得分:0)

我能够恢复原始/旧的未编辑Flash SWF文件,而是修改了PHP代码,该代码传递了一个变量和值“ endpoint”。

在我提供的代码示例中,它检查端点中是否包含https(我最初以为是)。

当HTTP_X_FORWARDED_PROTO为“ https”时,我添加了代码来修改“ endpoint”的值,示例如下:( $ 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