JW Player之跨域安全(Crossdomain Security)
最近一段时间为了众所周知的目的而寻觅国外免费的php空间,此事不难,正事也很快就完成了。大部分php空间都配有MySQL,为了一点点小事把那么多免费获得的资源晾着,有点浪费了。于是又折腾起WordPress,然后又牵连到JW Player的WordPress模块(Modules)。以前只是在网盘里瞎折腾,一旦来独立空间玩JW Player,发现跨域安全是必须面对的问题,于是就有了本文。之前我的博文《JW Player使用简介》曾经提到过,因为Adobe Flash Player的安全限制,JW Player会拒绝加载来自和player.swf不同域的文件。粗略来说,包含以下三种数据将会被拒绝:
*加载数据文件(播放清单和字幕文件)。*加载SWF文件(插件和皮肤)。*访问媒体原始数据(例如波形数据和位图数据)。官方LongTailVideo给出两种解决办法:
*使用代理(本文略)。*Crossdomain XML。这是官方推荐的首选方式,理由是最好且最简单。一、跨域安全检查
假设player.swf存放于www.aaa.com/player.swf,而播放清单(假设为xxx.xml)存放于www.bbb.com/xxx.xml。当player.swf准备加载来自不同域的www.bbb.com/xxx.xml时,会先检查www.bbb.com于根目录下是否存在crossdomain.xml文件,如果没有则停止访问并报错,如果存在该文件,则检查文件的配置是否符合访问条件,不符合同样要报错,符合则加载。如果没有xml播放清单而是直接加载媒体文件,则不会报错,也可以正常播放,但是插件无法加载。
二、crossdomain.xml是什么
简单地说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="*" />《/cross-domain-policy>把这段代码拷贝到记事本,另存为crossdomain.xml即可。
其中《allow-access-from domain="*" />这段代码表示授权所有地址的player.swf都可以访问,这是很省心但显然不够安全的配置。想要了解其他更具体的参数配置,那就要到Adobe的官网去下载《Cross-domain policy file specification》pdf文件。
三、crossdomain.xml如何使用
很简单,把crossdomain.xml文件上传到空间的根目录下。只要任何被加载的文件来自不同的域(相对于player.swf),那么该域的根目录下就必须有crossdomain.xml,否则无法顺利加载下一个文件。
四、关于JW Player的插件(Plugins)
插件同样受到跨域安全的限制。插件其实也是一种swf文件,但是和皮肤运用不同,普通用户即使把插件文件上传到自己的空间也不会被使用。所有插件文件由官方统一放置于http://plugins.longtailvideo.com/下(当然少不了crossdomain.xml),所有普通用户的插件请求都会被指向该地址,除非你改写程序代码。而要改写程序代码有两种途径:一是自己破解,二是付费购买。
五、跨域检查顺序
大致以这样的顺序检查:播放清单—〉媒体原始文件—〉插件。经过我自己的试验,将这一过程以下图汇总:
页:
[1]