在CDN上托管皮肤文件时可能出现Javascript问题

时间:2011-07-11 22:22:38

标签: javascript magento cdn

我最近通过我们的托管服务提供商Nexcess为我们的Magento商店配置了CDN。我最初只为媒体图像做过这个,但最近也将主题/皮肤文件移到了CDN上。这似乎在前端工作得很好,但我注意到管理员有问题。如果我尝试上传产品图片,则在弹出窗口中选择文件后会失败。它从未向我显示额外的框,我选择它是哪种类型的图像并完成上传。当不安全的皮肤URL指向CDN时,这只是一个问题。如果我再次在本地指出它,一切正常。

我的猜测是它与皮肤文件夹中的javascript有关。有些JS是基于主题而不是在根js/文件夹中,我知道有时远程托管的javascript可能是个问题。我们的CDN URL在我们的子域中,所以我想这样就可以了,但我对这些东西不太了解。

是否有人遇到此问题或类似问题?有什么想法吗?

3 个答案:

答案 0 :(得分:5)

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

要实现此目的,请将管理员的系统>配置>网站部分中的网站范围更改为您的前端商店,取消勾选“使用网站”复选框并将“基本JavaScript网址”设置为CDN。将范围更改回“默认配置”并将“基本Javascript URL”设置为{{unsecure_base_url}}js/

希望这有帮助,
JD

答案 1 :(得分:3)

有一个更简单的解决方案。 您可以为后端和网站提供不同的基本URL。 虽然Magento后端始终使用默认配置范围,但各个网站可能不同。

  1. 转到系统>常规>网络>不安全。确保当前配置范围是默认值
  2. 基础皮肤网址= {{unsecure_base_url}}皮肤/
  3. 基本媒体网址=媒体的CDN网址
  4. 基本JavaScript网址= {{unsecure_base_url}} js /
  5. 保存配置
  6. 将当前配置范围更改为您首选的网站
  7. 基本皮肤网址=您的静态CDN网址
  8. 基本媒体网址=媒体的CDN网址
  9. 基本JavaScript网址=您的静态CDN网址
  10. 上传按钮没有问题

答案 2 :(得分:2)

我遇到过这种情况,它是由闪存上传器中的安全(?!!)检查引起的。基础,链接,皮肤和媒体域必须相同才能进展。

快速解决方案是使用No Flash Image Uploader

根据我记得的lib/flex/uploader源文件(它们也是开源的),只有管理域需要匹配。管理员使用“全局”配置,因此您可以尝试仅将CDN详细信息放在“网站”范围内。要在它们之间切换,请使用配置页左上角的“配置范围”选择框。