我正在组装我的第一个AngularJS应用程序。我的控制器正在做一个$ http.get()调用。它使用的URL是正确的,但它最终调用了404错误方法。当我看到Firebug中请求的URL时,它更加令人困惑,并且它报告了200.我不知道认为我需要为此显示html。我无法想象这可能是相关的。
这里是我的有些省略掉的javascript:
var diagapp = angular.module("DiagApp", ['ui.bootstrap', 'ngResource']);
diagapp.controller("DiagCtrl", ['$scope', '$interval', '$http', function($scope, $interval, $http) {
$http({method:'GET',url:'http://<hostportandpath>/service/diagnostics/datasourceStatus.json'})
.success(function (data, status, headers, config) {
console.log(data);
})
.error(function (data, status, headers, config) {
console.log(data);
});
}]);
我试过在“$ HTTP”行设置一个断点,然后复制并粘贴在该行引用到其他浏览器选项卡中的URL,它向我显示该服务返回的正确json。然后我从断点继续,并在“错误”方法中达到断点,并且状态为404.
我该做什么错?
更新:
我修改这使得服务调用只是相对的,所以它不违反CDP。
我还设置了一个运行在我的webapp根目录的“node express”web服务器,因此它将为webapp中的文件提供请求,但是对REST服务的任何调用都会被重定向到另一个服务域。
当我在Firebug中进行调试时,我发现它得到了302,然后我发现它得到了200,所以它显然遵循了重定向。然而,它在“错误”方法中遇到了断点,仍然说它有404.换句话说,我得到了完全相同的结果。我很困惑。
更新:
这是我稍微省略的“Express服务器”配置:
var express = require('express');
var app = express();
app.use("/", express.static(__dirname));
app.use(app.router);
app.get('/FooService/*', function(req, res) {
res.redirect(302, 'http://<hostname>' + req.path);
});
app.listen(8000);
如果你的服务需要身份验证(甚至启用CORS),你可以在'$ http'配置对象中设置'withCredentials:true',它会发送一个OPTIONS预检 – calebboyd