Flash和網(wǎng)站跨域資源訪問(wèn)的實(shí)現(xiàn)方式是不一樣的,網(wǎng)站跨域資源訪問(wèn)都是使用Http協(xié)議定義的CROS的規(guī)范來(lái)實(shí)現(xiàn)的,而Azure Storage是支持Http協(xié)議的CORS規(guī)范的。但Adobe為Flash單獨(dú)設(shè)計(jì)了跨域訪問(wèn)設(shè)置的方式,所以使用Flash跨域訪問(wèn)Storage資源時(shí),是比較特殊的。
網(wǎng)站跨域資源訪問(wèn)設(shè)置
請(qǐng)參考官方設(shè)置文檔:如何設(shè)置Azure Storage支持CORS。
Flash跨域資源訪問(wèn)設(shè)置
Adobe單獨(dú)實(shí)現(xiàn)了跨域訪問(wèn)的權(quán)限配置方法。具體可參考Adobe關(guān)于此方面的文檔:跨域配置。
Adobe定義了crossdomain.xml文件,使用它來(lái)配置客戶端訪問(wèn)跨域資源的權(quán)限。
目前Adobe規(guī)定必須將該文件置于服務(wù)器訪問(wèn)的根目錄下。例如,我們想要使用Flash跨域訪問(wèn)存儲(chǔ)的資源,例如:http://test.blob.core.chinacloudapi.cn/aa/test.pg,F(xiàn)lash客戶端需要先訪問(wèn)http://test.blob.core.chinacloudapi.cn/crossdomain.xml該地址去獲取跨域配置文件。
為了支持Flash跨域,我們需要向存儲(chǔ)根目錄下存放crossdomain.xml文件,默認(rèn)情況下,存儲(chǔ)下的文件必須被放置到容器內(nèi),所以訪問(wèn)地址都會(huì)帶有容器名稱。為了支持這一特性,Azure Storage添加了一些系統(tǒng)容器。例如$root,該容器就是用來(lái)存放需要使用根目錄訪問(wèn)的文件資源。我們可以在Azure門戶中直接添加$root容器,如下圖:
添加后,我們就可以將配置好的crossdomain.xml文件上傳至此容器內(nèi),為了保證容器內(nèi)文件可以被公網(wǎng)直接訪問(wèn),可以將此容器設(shè)置為公共訪問(wèn)權(quán)限,之后我們就可以直接使用http://test.blob.core.chinacloudapi.cn/crossdomain.xml訪問(wèn)根目錄資源。