gpt4 book ai didi

javascript - Node、Express、Angular 路由错误

转载 作者:搜寻专家 更新时间:2023-10-31 23:53:51 25 4
gpt4 key购买 nike

我正在学习 MEAN 堆栈,但目前还没有开始使用数据库。我试图连接堆栈的其余部分,但它抛出错误

Error: Access to restricted URI denied createHttpBackend

我在谷歌上搜索过,但没有找到解决这个问题的方法。

这是我在 Angular app.js 中的主 Controller :

app.controller('MainCtrl', function($scope, $http) {
console.log("success");
$http.get('/').
success(function(data, status, headers, config) {
console.log("success");
$scope.name = data.name;
}).
error(function(data, status, headers, config) {
$scope.name = 'Error!';
})
});

我的 Node 服务器 app.js:

var express = require('express'),
http = require('http');

var app = express();

app.set('port', 3000);

app.get('/', function(req, res) {
var name = 'MyNameFromServer';
res.send(name);
})

http.createServer(app).listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});

这是浏览器控制台中的错误(当发生 Angular http.get 时):

"Error: Access to restricted URI denied
createHttpBackend/<@file:///F:/routing/js/angular.js:9902:6
sendReq@file:///F:/routing/js/angular.js:9703:0
$http/serverRequest@file:///F:/routing/js/angular.js:9415:15

请帮帮我。

这是完整的应用程序 - https://github.com/V1cHu/routing

最佳答案

在查看你的代码后,我发现你的代码中几乎没有问题1) 你不需要添加跨浏览器支持代码

app.all('/*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "GET, POST","PUT");
next()}
);

还有这段代码

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

2) 在服务器端 app.js 文件中,将调用 app.get('/') 更改为其他路由,例如 app.get('/xyz'),因为它不允许您加载 Angular js代码

3) 在您的主 Controller (MainCtrl) 中使用 $http.get('/xyz') 如上更新。不要使用 $http.get(' http://localhost:3000/ ')

$http.get('/xyz').
success(function(data, status, headers, config) {
console.log("success");
$scope.name = data;
}).
error(function(data, status, headers, config) {
$scope.name = 'Error!';
})

编辑:在服务器端 app.js 添加这段代码

var path = require('path')
app.use(express.static(path.normalize(__dirname + '/')));

并在客户端 app.js 文件中将 $scope.name 更改为 data not data.name

  $scope.name = data;

它将解决您的问题

关于javascript - Node、Express、Angular 路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com