【问题标题】:crossdomain.xml request begins with appended GET URL Datacrossdomain.xml 请求以附加的 GET URL 数据开头
【发布时间】:2011-03-01 14:27:26
【问题描述】:

我创建了一个 Flash 站点,只需点击服务器即可获取搜索数据。服务器是一个客户端服务器,位于另一个域中,所以我创建了一个 crossdomain.xml 来加载它们的根目录。

我不断收到沙盒安全错误,所以我运行了 Charles,发现我的代码在 urlVariables 之后请求了一个 crossdomain.xml。

例如。我打电话给

http://searchStuff.com/search?master_device_id=5606&q=email&do=simulator_sayt

我的程序在这里寻找crossdomain.xml:

http://searchStuff.com/search?master_device_id=5606&q=email&do=simulator_sayt/crossdomain.xml

我尝试过使用 Security.loadPolicyFile,但这在它遇到根处的 crossdomain.xml 之前不起作用(它显然是在错误的地方寻找它)。

我尝试过使用 POST 和 GET 方法,设置 URLRequest.data 方法并将变量作为字符串附加到原始 URL。同样的问题不断发生。

对可能导致此问题的原因有任何见解吗?

【问题讨论】:

  • 如果你把crossdomain.xml放在根目录,然后浏览到searchStuff.com/crossdomain.xml,它会读取文件吗?我的第一个猜测是你的服务器正在重写你的知识。

标签: flash actionscript-3 crossdomain.xml


【解决方案1】:

您可以在源代码中指定绝对路径:

flash.system.Security.loadPolicyFile("{http://domain.com/crossdomain.xml}");

【讨论】:

  • 感谢您的回复!我把它放在我的代码中并试了一下。不幸的是,Security.loadPolicyFile 只能在 从服务器根目录加载 crossdomain.xml 之后执行。而且我的程序搞错了服务器的根在哪里。
  • 不确定我是否理解 - 为什么在您刚开始初始化 swf 时无法加载策略文件?
  • Flash 要求用户首先从根目录加载策略文件。原因是可以读取 allowed-cross-domain-policies 标记,因为您可以指定只允许主 xml。当然,在我的例子中,flash 误解了 root 的位置,这意味着它永远无法加载它,并且 Security.loadPolicyFile 根本不会执行。
【解决方案2】:

好吧,我想通了。原来你必须在“?”之前有“/”,

ie:我使用的网址如下所示:

http://searchStuff.com/search?master_device_id=5606&q=email&do=simulator_sayt

但它需要看起来像这样

http://searchStuff.com/search/?master_device_id=5606&q=email&do=simulator_sayt

这解决了问题。

【讨论】:

    猜你喜欢
    • 2016-08-15
    • 2014-01-17
    • 2017-09-05
    • 2019-09-08
    • 2013-06-08
    • 2020-07-15
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多