我在我的项目中使用 dojo 文件上传组件。如果我从服务器加载 dojo.js 库,一切正常,但是如果我使用 CDN(另一台服务器),则文件上传组件会给出 CROSS DOMAIN XML ERROR 并且不起作用。
我知道问题在于 FLASH 上传组件是从另一台服务器 (CDN) 下载的,因此浏览器认为它是一个跨域 xml 请求。
有没有人有办法解决这个问题?请注意,如果我从服务器加载 dojo 库,则一切正常,但整体页面加载速度非常慢。这就是我们使用 CDN 的原因。
我在我的项目中使用 dojo 文件上传组件。如果我从服务器加载 dojo.js 库,一切正常,但是如果我使用 CDN(另一台服务器),则文件上传组件会给出 CROSS DOMAIN XML ERROR 并且不起作用。
我知道问题在于 FLASH 上传组件是从另一台服务器 (CDN) 下载的,因此浏览器认为它是一个跨域 xml 请求。
有没有人有办法解决这个问题?请注意,如果我从服务器加载 dojo 库,则一切正常,但整体页面加载速度非常慢。这就是我们使用 CDN 的原因。
我想到了。实际上,我们必须创建一个文件名 crossdomain.xml 并将其放在我们域的根目录中。例如,Yahoo 使用了 google flash 组件,它是从 yahoo 网站的 google 服务器加载的。因此,如果该 flash 组件尝试与 yahoo 服务器通信,则浏览器将尝试从 yahoo Web 服务器下载 crossdomain.xml 文件,并查看是否允许 google 域。
在我的情况下,我使用了 DOJO CDN,并且在 crossdomain.xml 文件中允许后,该组件运行良好。文件格式如下:
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="ajax.googleapis.com"/>
<allow-access-from domain="yui.yahooapis.com"/>
</cross-domain-policy>
@CBroe 感谢您的宝贵意见。