【问题标题】:Do I need a cross domain policy?我需要跨域策略吗?
【发布时间】:2012-06-17 14:58:36
【问题描述】:

当我通过 Visual Studio 的 2008 和 php 网页在调试模式下运行我的项目时,我正在使用一个 flex (3.5) 应用程序,该应用程序具有嵌入在与 C# asp.net 网站通信的 php 页面中的 swf我自己的机器一切正常。然后我将所有内容都移到了网络服务器上,现在它只是间歇性地工作,当它不工作时会在闪存日志中产生以下错误:

“错误:由于缺少策略文件权限,请求者从 /php-webpage/swf-file 对 /c#website 的资源请求被拒绝。”

我已经阅读了大量关于策略文件的内容,并且确实了解它们的目的,但我不明白的是,如果我的 php 网页和 C# 项目托管在同一台服务器上,那么我不需要策略文件,因为我没有跨域通信 - 我使用的是同一台服务器?

我在这里遗漏了什么还是只是误解了政策文件?如果没有必要,为什么闪存日志会抱怨策略文件权限?

【问题讨论】:

  • 他们在同一个服务器上,但是他们在同一个域上吗?注意php.mydomain.com 和csharp.mydomain.com 不是同一个域。
  • 如果您的错误是跨域问题;很可能每次都会失败;不仅仅是间歇性的。
  • RIAstar:C#项目和php网站在IIS默认网站下的虚拟目录不同
  • www.Flextras.com:我知道这种间歇性的性质没有任何意义。实际上,我也尝试过将跨域策略放入其中,但它有时仍然有效,并在闪存日志中产生相同的错误消息
  • 开启策略文件记录,让我们知道它说了什么……help.adobe.com/en_US/flex/using/…

标签: c# apache-flex security permissions cross-domain-policy


【解决方案1】:

@user1456312,我对C#服务器一无所知,但也许我可以给你一些解决办法。

在调试模式下,没有安全限制,所以没有问题。

在浏览器中输入url地址可以直接得到crossdomain.xml文件吗?

你把跨域文件放在哪里,访问你的程序的 url 地址是什么?

您可以尝试以下跨域测试:

<?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> 

此文件不用于生产,因为它意味着没有任何限制

如有必要,您可以使用Security.loadPolicyFile(url) 从服务器上的备用位置加载 crossdomain.xml 文件。

【讨论】:

  • michael:我可以直接获取两个跨域文件,并在服务器根文件夹 (Inenpub\wwwroot) 中有一个与上面的跨域具有相同的站点控制标记,另一个在 C# 网站文件夹中具有与您的相同 allow-access-from 域标记(没有安全属性和 allow-http-request-headers 因为它们会导致错误),Security.loadPolicyFile(url) 链接到它
  • user1456312,您是否尝试过使用 Fiddler 进行数据包跟踪?
  • 我使用过wireshark,可以看到正在传输的数据包,并且策略日志显示策略正在成功读取,所以我认为这不是网络问题
猜你喜欢
  • 2011-02-20
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2014-02-01
相关资源
最近更新 更多