我有一个应用程序,该应用程序最近获得了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);
}
}
谢谢, 亚当
答案 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