在CDN上托管皮肤文件时可能存在Javascript问题。

3
我最近为我们的Magento商店通过我们的托管提供商Nexcess配置了CDN。我最初只是为媒体图像配置了CDN,但最近也将主题/皮肤文件移到了CDN上。这在前端看来似乎运行良好,但我注意到管理界面存在问题。如果我尝试上传产品图像,在弹出窗口中选择文件后就会失败。它从未向我显示额外的框,让我选择图像类型并完成上传。只有当不安全的皮肤URL指向CDN时才会出现此问题。如果我再次将其指向本地,则一切正常。
我猜测这与存在于皮肤文件夹中的JavaScript有关。一些JS基于主题而不是位于根js/文件夹中,我知道有时远程托管的JavaScript可能会有问题。然而,我们的CDN URL位于我们的子域中,所以我想这应该没问题,但我对这方面的了解还不够。
有人遇到过类似的问题吗?有什么想法?

你的管理区域是否使用SSL? - Ian
@Ian,这与XSS有关,而不是SSL,请参见下面的答案。这是一个令人烦恼的问题! - Jonathan Day
1
@Jonathan Day,我这么问是因为在https和http之间切换通常被认为是“跨站点”,会触发XSS安全保护。请参阅http://en.wikipedia.org/wiki/Same_origin_policy。Flash使用类似的策略。 - Ian
3个回答

5

@clockworkgeek说得对,这与安全限制有关(我相信是XSS)。一种不需要安装模块的选项是指定只有你的前端网站从CDN提供其JS,这意味着管理端的JS将来自服务器,从而防止XSS问题。

实现此目标的方法是,在管理员的“系统>配置>Web”部分中更改网站范围为前端存储库,取消“使用网站”复选框并将“基本JavaScript URL”设置为CDN。然后将范围更改回“默认配置”,将“Base Javascript URL”设置为{{unsecure_base_url}}js/

希望对您有所帮助,
JD


终于有机会尝试这个了。它似乎运行良好。谢谢! - Mageician

3
有一个更简单的解决方案。 您可以为后端和网站设置不同的基本URL。虽然Magento 后端始终使用默认配置范围,但各个网站可以不同。
  1. 转到 System>General>web>Unsecure。 确保当前配置范围为“默认”
  2. Base Skin URL = {{unsecure_base_url}}skin/
  3. Base Media URL = 您的媒体CDN URL
  4. Base JavaScript URL = {{unsecure_base_url}}js/
  5. 保存配置
  6. 将当前配置范围更改为您首选的网站
  7. Base Skin URL = 您的静态CDN URL
  8. Base Media URL = 您的媒体CDN URL
  9. Base JavaScript URL = 您的静态CDN URL

上传按钮没有任何问题


2
我经历过这种情况,它是由Flash上传器中的安全检查引起的。基本、链接、皮肤和媒体域必须相同才能进行进一步操作。
快速解决方案是使用无Flash图像上传器
据我记得,lib/flex/uploader源文件(它们也是开源的)只需要匹配管理员域名即可。管理员使用“全局”配置,因此您可以尝试仅在“网站”范围内放置CDN详细信息。要在它们之间切换,请使用配置页面左上角的“配置范围”选择框。

谢谢您的回复。我会尽快调查这个问题。 - Mageician

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接