flex和.net 2.0 Web服务,如何允许从其他域访问?
-
03-07-2019 - |
题
我在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不允许应用在自己的域之外使用它。**
解决方案
默认情况下,Flex不允许访问远程主机上的Web服务。这是Flex的安全功能。由于您的Flex应用程序部署在 myapp.mysite.com
,因此它位于与 mysite.com
服务不同的主机上。
您可以将 crossdomain.xml
添加到mysite.com,Flex将检查该服务是否允许来自不同域的访问。 crossdomain.xml
文件必须位于域的Web根目录中( 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>
其他提示
尝试检查使用Tamper Data(Firefox的扩展名)进行的请求。检查以便应用找到crossdomain.xml文件。如果路径关闭,那就是你的问题。
不隶属于 StackOverflow