子域和Uploadify无法正常工作

时间:2010-05-17 20:03:37

标签: javascript .htaccess uploadify wildcard-subdomain

我有通配符子域,例如:

.example.com转到example.com/app /

如果我使用目录而不是子域,似乎uploadify工作正常。但是,当我使用子菜单并单击上传图像时,没有任何反应。它似乎加载闪存很好,没有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'
   });

2 个答案:

答案 0 :(得分:2)

uploadify使用flash执行上传。 Flash受到相同的原始策略的约束,就像本机浏览器一样,只是它有一个漏洞。

Flash将在网络服务器的根目录中查找名为crossdomain.xml的文件。此XML文件指示哪些其他域可以通过闪存访问其内容。

例如,这里是twitter's crossdomain file

在您的情况下,创建或修改此文件以接受来自各个域的连接可能就足够了。

祝你好运!

答案 1 :(得分:0)

基于same origin policy的维基百科条目,听起来这样做是行不通的,因为就JavaScript而言,sub.domain.com!= domain.com。话虽如此,它也sounds like,只要JavaScript 认为它正在请求同一个域,一切都应该是好的。

如果你告诉Uploadify发布到原始的非重写路径并允许Apache自动处理重写,那么JavaScript将不会认为它违反了相同的原产地政策。

例如:如果您将domain.com/path/to/foo重新映射到foo.domain.com,然后在您的JavaScript请求/path/to/foo中,Apache将相应地翻译请求,而JavaScript则不会知道区别。