无法在Chrome中使用文件协议打开Angular应用程序
Can't open Angular app using file protocol in Chrome
嗨,我有一个问题与angularjs和chrome,这是代码:
var angularRoutingApp = angular.module('angularRoutingApp', ['ngRoute'])
// Configuración de las rutas
.config(function($routeProvider)
{
$routeProvider
.when('/', {
templateUrl : 'pages/home.html',
controller : 'mainController'
})
.when('/artistas', {
templateUrl : 'pages/artistas.html',
controller : 'artistasController'
})
.when('/login', {
templateUrl : 'pages/login.html',
controller : 'loginController'
})
.otherwise({
redirectTo: '/'
});
});
如果我用Opera, Firefox或safari打开index.html,我没有任何问题,但如果我用chrome打开这个,不工作路由器提供程序,并在控制台上显示一个错误消息,如下所示:
XMLHttpRequest无法加载文件://localhost/Users/multivideo/Desktop/FTL-Angular/pages/home.html。跨域请求仅支持HTTP。index . html: 1
Error: A network error occurred.
at Error (native)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:72:206
at C (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:68:99)
at f (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:66:69)
at C (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:92:375)
at C (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:92:375)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:94:28
at h.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:102:293)
at h.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:100:50)
at h.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js:103:100) angular.js:9413
Chrome使用相当严格的同源策略。您可以做两件事:
1)通常不应从file://
发展。使用MAMP,您的内置Apache web服务器或其他方式来设置本地web服务器。如果你使用的是Mac,根据你提供的路径,你可以通过打开终端并输入
$> python -m SimpleHTTPServer 8080
这将从调用它的文件夹中打开一个端口为8080的简单HTTP服务器。
2)你可以,但你真的不应该,放松你的Chrome安全设置。这是可能的,但通常是不好的做法。
你应该有一个web服务器在运行。使用file://
打开它将在某些浏览器中启用保护,这将阻止您运行部分代码,例如ajax调用。
最好的解决方案是运行一个web服务器,特别是因为angular自带一个。例如,我使用yeoman,我可以运行grunt serve
。点击这里https://docs.angularjs.org/tutorial/step_00
另一个选项是设置chrome允许XHR与文件协议允许谷歌chrome使用XMLHttpRequest从本地文件加载URL
除了@Chris vCB的回答,如果你想用php代替
php -S localhost:8080
(或任何你想要的domain::port)
- Angular JS IE9 Hashbang url rewriting
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 使用angular重定向到html页面
- angular.js没有'无法在PhoneGap中处理视图标记
- Javascript(Angular)从一个对象数组到第二个数组查找值
- angular 1.5应用程序中的导航栏
- angular的下拉菜单
- Angular只从数组中获取所需的数据
- 如何将不可变的js导入angular 2(alpha)
- Angular js-返回一个包含类似
- 如何使用 Angular JS 将数据保存在数据库中
- 将JSON对象传递给angular指令
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- Angular:更新一次性绑定的数据
- 同步调用,直到用户通过angular验证为访问者
- 将Angular js与taglib结合使用
- 无法在Chrome中使用文件协议打开Angular应用程序
- Angular - 仅协议方案支持跨源请求 - 需要解决方法才能在本地运行$http