Glassfish V3 下页面使用 swf 时 crossdomain.xml 应放在哪里?

我先是在 Flex Builder 做了一个小的 swf 文件,调试一切正常,可以 Java EE 应用程序通讯。

当把这个 swf 嵌入到 Servlet 后,一运行就提示安全错误:


Fault faultString="Security error accessing url"
faultCode="Channel.Security.Error"
faultDetail="Destination: DefaultHTTP"


这个错误已经是很普遍的问题了,在网上一搜就一大堆答案。Adobe 官方及各地高手的答案都是一个,就是在 网站根目录放上一个 crossdomain.xml 文件,里面的内容大同小异,基本就是:


<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>

<!-- This is a master socket policy file -->
<!-- No other socket policies on the host will be permitted -->
<site-control permitted-cross-domain-policies="master-only"/>

<!-- Instead of setting to-ports="*", administrator's can use ranges and commas -->
<!-- This will allow access to ports 123, 456, 457 and 458 -->
<!-- <allow-access-from domain="swf.example.com" to-ports="123,456-458" /> -->

<allow-access-from domain="*" to-ports="*" />
<allow-http-request-headers-from domain="*" />
<!-- <allow-http-request-headers-from domain="*" headers="*" secure="false" /> -->
</cross-domain-policy>


那我就如法炮制,在我的APP上放上这个 crossdomain.xml 文件

[img]http://dl.iteye.com/upload/attachment/262485/6aea0f2b-da80-34ca-9612-a644c27a1578.jpg[/img]


重新编译和部署,错误依旧。然后,就是再搜索、修改,把 crossdomain.xml 放到所有的目录,等等,花了几乎大半天时间,安全错误还是如旧。

后来仔细想了想,既然官方的指引也就是把 crossdomain.xml 放网站的根目录,为什么我就不行呢?

突然间想起,我在 Netbeans 编译和部署的 App 并不是根目录,而是 根以下的 APP 目录,我在这个目录下放的 crossdomain.xml 并不是在根目录。

Glassfish 的根是在 domain/domain1 下的 docroot, 在浏览器直接输入 http://localhost:8080 所打开的就是这 docroot 里的 index.html。

呵呵,那把 crossdomain.xml 放到 domain1/docroot 下就可以了,安全错误消失。

[img]http://dl.iteye.com/upload/attachment/262487/933df463-b4ca-309c-91d0-9394ffbedcf4.jpg[/img]

:-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值