需要通过 https 制作 actionscript POST 数据
Posted
技术标签:
【中文标题】需要通过 https 制作 actionscript POST 数据【英文标题】:Need to make actionscript POST data over https 【发布时间】:2019-06-15 04:46:58 【问题描述】:我有一个最近获得 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);
谢谢, 亚当
【问题讨论】:
我取得了微小的进步,但这(目前)绝对是一种解决方法。我正在等待我的 OPS 团队的帮助,以诊断在通过 AWS 负载均衡器提供站点后 HTTPS 丢失的原因。取得的进展是我通过将new AMFChannel
更改为new SecureAMFChannel
作为覆盖来强制输入上下文。这是一个我不想留在原地的黑客。所以现在一切正常,但我不想依赖这个 hack。
【参考方案1】:
我能够恢复原始/旧的未经编辑的 Flash SWF 文件,而是修改了传入名为“endpoint”的变量和值的 php 代码。
在我提供的代码示例中,它会检查端点中是否包含 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
【讨论】:
以上是关于需要通过 https 制作 actionscript POST 数据的主要内容,如果未能解决你的问题,请参考以下文章
nginx证书制作以及配置https并设置访问http自动跳转https(反向代理转发jboss)