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