flex和.net 2.0 Web服务,如何允许从其他域访问?

时间:2009-04-30 22:12:15

标签: .net vb.net flex service

我在flex builder中创建了一个项目,应用程序服务器类型设置为none。

当我调试时,我可以从网站http://mysite.com/ws/ws.aspx?wsdl上的本地计算机访问网络服务

当我将flex应用程序上传到mysite.com/myapp.html时,效果很好。

但是,当我将其上传到myapp.mysite.com/myapp.html时,它将无法访问该网络服务。

任何人都知道我缺少什么?

由于

P.S。 WS是用VB.net创建的,当我创建一个应用服务器类型设置为.net的flex项目时,它不会从我的本地机器访问WS

这是我的crossdomain.xml文件

<?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"/>
  <allow-access-from domain="*"/>
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

**我的猜测是它不是灵活问题,而是.net安全功能......我不知道如何配置。

.NET不允许应用在自己的域之外使用它。**

2 个答案:

答案 0 :(得分:1)

默认情况下,Flex不允许访问远程主机上的Web服务。这是Flex的安全功能。由于您的Flex应用程序部署在myapp.mysite.com,因此它位于与mysite.com处的服务不同的主机上。

您可以向mysite.com添加crossdomain.xml,Flex将检查该服务是否允许来自不同域的访问。 crossdomain.xml文件必须位于域的网络根目录(mysite.com/crossdomain.xml)中。我使用了以下内容来允许调试使用。请注意,它允许全部使用,因此如果要限制生产中的使用,则需要稍后进行修改。

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
    "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="*" to-ports="*" />
   <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

Flex documentation中的更多信息,尤其是knowledge base article

答案 1 :(得分:1)

尝试检查使用Tamper Data(Firefox的扩展名)进行的请求。检查以便应用找到crossdomain.xml文件。如果路径关闭,那就是你的问题。