产品-color.html

<div class="list-group-item">
    <h3>Hello <em class="pull-right">Brother</em></h3>
</div>

应用程序.js

(function() {
  var app = angular.module('gemStore', []);

  app.controller('StoreController', function($http){
              this.products = gem;
          }
  );

  app.directive('productColor', function() {
      return {
          restrict: 'E', //Element Directive
          templateUrl: 'product-color.html'
      };
   }
  );

  var gem = [
              {
                  name: "Shirt",
                  price: 23.11,
                  color: "Blue"
              },
              {
                  name: "Jeans",
                  price: 5.09,
                  color: "Red"
              }
  ];

})();

一旦我使用名为 productColor 的自定义指令输入 product-color.html 的包含,我就开始收到此错误:

XMLHttpRequest cannot load file:///C:/product-color.html. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource.
angular.js:11594 Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///C:/product-color.html'.

可能出什么问题了?这是 product-color.html 的路径问题吗?

我所有的三个文件都在同一个根文件夹中 C:/user/project/

6个回答

发生此错误是因为您只是直接从浏览器打开 html 文档。要解决此问题,您需要从网络服务器提供您的代码并在本地主机上访问它。如果您有 Apache 设置,请使用它来提供您的文件。一些 IDE 内置了 Web 服务器,例如 JetBrains IDE、Eclipse...

如果您有 Node.Js 设置,那么您可以使用http-server只需运行npm install http-server -g,您就可以在像http-server C:\location\to\app.

Mr.Hyde 你可以使用:WebSettings settings = _webView.getSettings(); settings.setAllowFileAccessFromFileURLs(true); settings.setAllowUniversalAccessFromFileURLs(true); 在Android webview的情况下
2021-03-21 05:12:56
出于好奇,为什么不能只在网络浏览器中打开文件?
2021-03-26 05:12:56
@reddy 简单明了:浏览器直接在您的计算机上访问文件系统是一个安全问题。
2021-03-27 05:12:56
http-server 是我见过的最简单的本地托管方式。注意:如果你在 windows 上没有 npm,只需安装 node.js,它就会在 cmd 中可用。
2021-04-02 05:12:56
如果它发生在android的webview中,我该怎么办!?
2021-04-04 05:12:56

非常简单的修复

  1. 转到您的应用程序目录
  2. 启动 SimpleHTTPServer


在终端

$ cd yourAngularApp
~/yourAngularApp $ python -m SimpleHTTPServer

现在,在浏览器中访问 localhost:8000,页面将显示

在 Python 3 中,它应该是python -m http.server.
2021-04-01 05:12:56
这很有帮助!很好的解决方案。
2021-04-07 05:12:56

在 chrome 中不允许该操作。您可以使用 HTTP 服务器 (Tomcat) 或使用 Firefox。

简短而简单......有效!
2021-03-12 05:12:56
也真的帮助了我。
2021-03-12 05:12:56
这对我来说是最好的答案。
2021-03-14 05:12:56
我在我的情况下使用了 Firefox 并且它有效。Chrome 是否比 Firefox 更安全?为什么我可以这样做......
2021-03-28 05:12:56
嘿..非常感谢..你的回答非常有帮助......节省了我很多时间
2021-03-28 05:12:56

我的问题只是通过添加http://到我的 url 地址来解决。例如我用http://localhost:3000/movies而不是localhost:3000/movies.

如果您在 chrome/chromium 浏览器中使用它(例如:在 Ubuntu 14.04 中),您可以使用以下命令之一来解决此问题。

ThinkPad-T430:~$ google-chrome --allow-file-access-from-files
ThinkPad-T430:~$ google-chrome --allow-file-access-from-files fileName.html

ThinkPad-T430:~$ chromium-browser --allow-file-access-from-files
ThinkPad-T430:~$ chromium-browser --allow-file-access-from-files fileName.html

这将允许您以铬或铬加载文件。如果您必须对 Windows 执行相同的操作,您可以在 chrome 快捷方式的属性中添加此开关或cmd使用标志运行它Chrome、Opera、Internet Explorer 默认不允许此操作。默认情况下,它仅适用于 Firefox 和 safari。因此,使用此命令将对您有所帮助。

或者,您也可以根据您熟悉的语言将其托管在任何 Web 服务器(例如:Tomcat-java、NodeJS-JS、Tornado-Python 等)上。这将适用于任何浏览器。

其它你可能感兴趣的问题
上一篇在 JavaScript 中查找 JSON 下一篇在 angular.js 中解析 JSONP $http.jsonp() 响应