2010-05-17 69 views
1

我有例如通配符子域:的子域,Uploadify不工作

.example.com的去example.com/app/

看來,如果我使用的目錄,而不是uploadify工作正常子域。但是當我使用subdoman並點擊上傳圖像時,什麼也沒有發生。它似乎加載閃存罰款,沒有JS錯誤,但當我點擊按鈕,我沒有得到一個文件瀏覽器。也許我做通配符域的方式會影響它,不確定。這裏是我的htaccess:

RewriteCond %{HTTP_HOST} ^(.*).example.com 
RewriteCond %{HTTP_HOST} !^www.example.com [NC] 
RewriteRule ^(.*)$ http://example.com/app/%1/$1 [P] 

我也使用完整的路徑來調用js和flash文件。它們不位於子域下,而位於根域下。所以,我只是使用完整的URL路徑,這裏是我的js的例子:

$("#fileInput").uploadify({ 
     'uploader'  : 'http://example.com/js/upload/_scripts/uploadify.swf', 
     'script'   : 'http://sub.example.com/discuss/upload/do_upload/' + session_id, 
     'cancelImg'  : 'http://example.com/images/icons/del.png', 
     'folder'   : '/files/', 
     'multi'   : true, 
       'auto' : true, 
       'queueSizeLimit' : 10, 
       'buttonImg' : 'http://example.com/images/attachafile2.jpg', 
       'width' : 91, 
       'height' : 23, 
       'wmode' : 'transparent' 
    }); 
+0

有可能你打通過嘗試訪問您的子域名跨域違反的JavaScript。不知道這一點,雖然。 – 2010-05-17 20:11:55

+0

我不太確定。我試圖通過查看是否可以在目錄版本中打破它而找到瓶頸,但是沒有去。 – mikelbring 2010-05-17 20:18:57

回答

2

uploadify使用閃存來進行上傳。 Flash受制於相同的原產地政策,非常像原生瀏覽器,只是它存在漏洞。

閃存將尋找一個文件在Web服務器的根稱爲crossdomain.xml。該XML文件規定了哪些其他域可以通過閃存訪問其內容。

例如,這裏是twitter's crossdomain file

這可能是你的情況來創建或修改該文件,以接受來自所涉及的各個領域的連接就足夠了。

祝你好運!

+0

這就是我玩過更多的東西后我想到的。我改變了一些東西的設置方式,現在它似乎工作。 – mikelbring 2010-05-17 20:58:37

0

基於維基百科條目它聽起來像這樣same origin policy不會工作,因爲sub.domain.com =域! .com就JavaScript而言。話雖這麼說,它也sounds like,只要JavaScript的認爲它要求同一域中的一切應該只是桃色。

認爲如果你告訴Uploadify張貼到原來沒有改寫路徑,讓Apache來自動處理重寫,然後用JavaScript不認爲這是違反同源策略。

例如:如果重新映射到domain.com/path/to/foofoo.domain.com然後在你的JavaScript要求/path/to/foo,Apache將相應的翻譯請求和JavaScript將不知道其中的差別。