我有通配符子域,例如:
.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'
});
答案 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则不会知道区别。