我知道这个问题已经被问得很烦了;然而,我似乎被困住了。我在Flash中创建了一个文件上传器,并在本地机器上成功测试。但是,当将其移动到生产服务器并尝试从另一台机器访问它时,不会调用php。最初会抛出安全异常,但在创建crossdomain.xml文件后已经解决了。
我已经在php文件中放置了一些日志记录,看看它是否被调用,没有骰子。它叫做if在本地运行,但就像我说的,跨域不是那么多
我的crossdomain.xml文件如下所示。
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
在Flash或服务器上的配置中是否还有其他需要做的事情?
您可以尝试新的跨域格式:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<!-- Place top level domain name -->
<allow-access-from domain="*" />
<allow-access-from domain="*" to-ports="80,443"/>
<allow-http-request-headers-from domain="*" headers="*" />
</cross-domain-policy>
我不熟悉flash,但我正在开发一些flex应用程序,所以我可以给你我的经验来处理跨域问题。
FlashPlayer正在寻找URL域根中的crossdomain.xml文件,例如
domain.com/crossdomain.xml
是FlashPlayer想要找到它的地方。因此,您可以通过输入上述url来加载跨域文件。
但是,您可以使用Security.loadPolicyFile(url)
从服务器上的备用位置加载crossdomain.xml文件。
您可以尝试以下crossdomain.xml:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM “/xml/dtds/cross-domain-policy.dtd”>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
这个文件意味着对任何东西都没有限制,所以这对于故障排除很好,但不适合在生产环境中使用。
另外,你应该检查你的代码,看看你是否已经在你的flash文件中把url从localhost改为你的域名。
有时跨域问题与跨域文件无关。
例如:是否将服务器上的目录chmod为777用于文件上传?
你可以参考我对以下问题的回答:flex actionscript不上传文件到PHP页面帮助!
你应该给我们一些flash和php编码,也错误的消息,你已经收到。否则,你的问题太笼统了。