需要通过 https 制作 actionscript POST 数据
Need to make actionscript POST data over https
我有一个应用程序最近获得了 AWS 证书(并放入了 ELB - 我认为是经典的)。
Web 应用程序有一个 Flash 影片,它进行 Web 调用(对同一站点 URL)以便使用 Zend Framework 1 模型获取数据。浏览器中的页面没有变化。
当我通过 https 请求站点时,所有导入的项目都已更改为 https 协议,但是当 Flash 影片初始化时,它通过 http 发出非安全请求。
当我通过 http 或 https 加载网站时,它会发出这些不安全的请求。
我提到 AWS ELB 的原因是因为有人告诉我 ELB 正在对端口 80 进行某种重定向。
如果我通过 https 请求站点,并立即在 $_SERVER 数组上执行 print_r,我只看到 HTTPS 作为重定向键,而没有看到 $_SERVER['HTTPS'] 集,这我觉得很重要。
总而言之,Zend 1.12 站点内的 Flash 影片正在通过 http 发出 POST 请求,我希望它发出相同的请求,但通过 https。
这是一部非常古老的Flash电影,虽然我已经用反编译器打开了swf文件,但我对actionscript了解不多,无法看到(在许多代码文件中)我可以指示的位置电影调用 https 而不是 http。
我的理论是,当站点正常 运行 和 SSL/https 时,flash 电影可能?可能?开始进行 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);
}
}
谢谢,
亚当
我能够恢复 original/old 未经编辑的 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
我有一个应用程序最近获得了 AWS 证书(并放入了 ELB - 我认为是经典的)。
Web 应用程序有一个 Flash 影片,它进行 Web 调用(对同一站点 URL)以便使用 Zend Framework 1 模型获取数据。浏览器中的页面没有变化。 当我通过 https 请求站点时,所有导入的项目都已更改为 https 协议,但是当 Flash 影片初始化时,它通过 http 发出非安全请求。
当我通过 http 或 https 加载网站时,它会发出这些不安全的请求。
我提到 AWS ELB 的原因是因为有人告诉我 ELB 正在对端口 80 进行某种重定向。
如果我通过 https 请求站点,并立即在 $_SERVER 数组上执行 print_r,我只看到 HTTPS 作为重定向键,而没有看到 $_SERVER['HTTPS'] 集,这我觉得很重要。
总而言之,Zend 1.12 站点内的 Flash 影片正在通过 http 发出 POST 请求,我希望它发出相同的请求,但通过 https。
这是一部非常古老的Flash电影,虽然我已经用反编译器打开了swf文件,但我对actionscript了解不多,无法看到(在许多代码文件中)我可以指示的位置电影调用 https 而不是 http。
我的理论是,当站点正常 运行 和 SSL/https 时,flash 电影可能?可能?开始进行 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);
}
}
谢谢, 亚当
我能够恢复 original/old 未经编辑的 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