我的dojo仅在通过HTTP访问时才有效

时间:2010-12-29 06:46:40

标签: javascript dojo

我下载了dojo工具包并打开dijit / themes / themeTester.html。道场无法发挥作用。我必须将工具包复制到我的Web服务器的webapp目录中。然后我通过HTTP访问相同的HTML。道场有效。

在开发过程中,我是否必须始终将页面部署到Web服务器进行测试?

感谢。

1 个答案:

答案 0 :(得分:2)

此行为不是特定于Dojo的。有些浏览器(Firefox会想到)出于安全原因禁止直接从文件系统加载的网页加载其主目录之外的资源。

示例:您的网页位于/home/bob/page.html。它可以包括以下资源:

  • bob.js(有效路径:/home/bob/bob.js
  • ./sam.js/home/bob/sam.js
  • abc/spot.js/home/bob/abc/spot.js

无法加载以下资源(即使它们存在):

  • ../bob.js/home/bob.js
  • /home/tom/script.js
  • ../tom/script.js/home/tom/script.js

理论上你可以进入Firefox内核并关闭这个“功能”,但是你可能会遇到其他问题:

  • 在某些情况下,XHR在文件系统中很有趣。 Web服务器发送包含文件的MIME头,而文件系统不提供此服务,并且XHR被强制猜测。有时它会猜错。
  • 虽然Dojo不需要任何服务器端代码,但其测试可能会使用PHP来模拟服务器端数据存储和其他事情。从文件系统运行时,这些PHP文件通常按原样提供,而不是执行。

除此之外,您应该能够直接从文件系统运行任何Web应用程序。只需确保整个应用程序位于一个文件夹中,所有HTML页面都在顶层文件夹中(或在子文件夹中,但不要使用“上面”的任何内容),避免绝对路径和“上升”符号({{1在路径中将您带到主文件夹之外(甚至暂时),并始终测试您的XHR响应。