2

我正在编写一个非常简单的 Flash 应用程序 (AS 2) 来为用户注册电子邮件通讯;它的工作方式是它使用 LoadVars 通过带有用户电子邮件地址的 POST 访问(相同域)PHP 脚本。然后,PHP 脚本通过 curl 将信息传递到另一个域(时事通讯邮件 URL)以注册用户。

到目前为止,一切都很好,它可以在大约 70% 的经过测试的计算机上运行(它是从网站上实时测试的,而不是本地测试)。但是,在某些计算机上,似乎并未进行 LoadVars.sendAndLoad 调用,因为从这些计算机发送的电子邮件地址未显示在订阅者列表中。我知道 PHP 脚本仍然可以在这些计算机上运行,​​因为我已经制作了一个准系统 HTML 表单,它的行为方式与 Flash 应用程序完全相同(使用相同的变量发送到相同的 PHP 脚本等)并且它适用于所有计算机。

这是相关的AS:

submit_btn.onRelease = function(){
    submitOutAnimation();
    this.enabled = false;
    var sendvar_lv:LoadVars = new LoadVars();
    var loadvar_lv:LoadVars = new LoadVars();
    loadvar_lv.onLoad = function(success:Boolean){
        gotoAndStop("successful");
    }
    sendvar_lv.email = entryField_mc.myAdd.text;
    sendvar_lv.sendAndLoad("http://notmyrealdomainname.com/passthrough.php?ck="+new Date().getTime(),loadvar_lv,"POST");
}

这可能是 Flash 客户端设置的安全问题吗?你还有其他建议吗?我的印象是,假设它们具有相同的 Flash 播放器版本,不同计算机之间的 Flash 播放(除了性能)没有太大差异,而这种体验正在打破这种幻想......

4

2 回答 2

2

如果您尝试访问不在同一域(甚至是子域)中的脚本,则必须将跨域策略文件放在服务器根目录(crossdomain.xml)中

阅读更多: http://kb.adobe.com/selfservice/viewContent.do?externalId= tn_14213

于 2009-01-15T14:52:23.043 回答
2

这可能取决于用户是否输入“www”前缀,因为它将被视为一个单独的子域。如果 Flash 位于同一台服务器上,为什么不删除“ http://notmyrealdomainname.com ”并使用 passthrough.php 的相对路径?

于 2009-01-15T15:00:42.903 回答