2010-05-17 71 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将不知道其中的差别。