【问题标题】:Require.js Templates "Cross origin requests are only supported for HTTP" ErrorRequire.js 模板“跨源请求仅支持 HTTP”错误
【发布时间】:2012-11-13 08:34:14
【问题描述】:

我一直在使用 Require.js 和 Backbone.js 等。我一直在尝试制作一个简单的 todo 应用程序,我通过从桌面双击 index.html 并在浏览器中显示并使用它来运行它。

但是,当通过 Require.js 获取模板时,它给了我以下错误:

XMLHttpRequest cannot load file:///C:/bada/js/templates/headerTemplate.html. Cross origin requests are only supported for HTTP.

我知道这种情况正在发生,因为我没有执行来自服务器的请求。我知道在 Chrome 中,这个错误可以通过在启动 Chrome 时使用一些参数来抑制,但我也打算在我的手机上使用这个应用程序,通过在本地运行 index.html。

是否有办法防止此错误发生并让应用正常运行?

【问题讨论】:

    标签: javascript backbone.js requirejs


    【解决方案1】:

    使用 Google Chrome,您可以使用标志 --allow-file-access-from-files 来做到这一点。这样它就可以访问您的本地文件系统。

    我建议更改 Chrome 图标的属性并默认启用该标志。其他浏览器可能有类似的东西,但我不知道。

    【讨论】:

      【解决方案2】:

      简短回答:不。

      更长的答案:查看应用程序缓存。

      在您的应用程序构建完成之前不要这样做。但在构建完成后,如果您设置离线缓存并利用localStorage(如果需要),它应该可以在大多数受人尊敬的手机/平板电脑/笔记本电脑/PC 上运行。

      但就像我说的,不要设置你的缓存清单,直到之后你准备好了冻结所有文件数据。
      它在缓存数据方面做得非常好,这很棒... ...但是如果您对任何文件进行更改,则使缓存无效以下载最新版本,使用新内容重置缓存会变得非常痛苦...

      ...如果您想像我一样每 5 分钟按一次 CTRL+S,为了安全起见... ...如果你想看到这些微小的变化,你会头疼的。

      【讨论】:

      • 嗯,这是一个令人沮丧的。我真的希望我能找到解决方案。将查看缓存内容,否则只需将所有模板推送到主 html 文件中 -_-
      • btw,为什么 Require.js 加载 JavaScript 模块文件(.js 文件)没有问题,但加载 HTML 有问题?
      • Require 创建一个脚本元素,并将 src 设置为 js 文件的模块。对于 HTML 模板,它使用 Ajax 加载它们(使用文本!插件)
      猜你喜欢
      • 2013-11-19
      • 1970-01-01
      • 2016-07-26
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多