尝试从angular执行一些基本的REST服务,但我得到的只是一个空的错误响应。
我直接在我的电脑上打开index.html(不确定这是否是问题),然后点击“登录”#39;最终调用我的控制器:
$scope.doLogin = function()
{
var pr = $http.get('http://localHost:7777/BuilderDBSvc/login', {params: {user: $scope.userid, pass: $scope.password} })
.success(function(data)
{
console.log(data);
domains = data;
})
.error(function(data, status, headers, config)
{
console.log(data)
console.log(status)
console.log(headers)
console.log(config)
});
pr.then(function(data)
{
$scope.user = data.data;
});
};
使用firefox进行调试,我将断点放在所有3个函数中:success
error
和then
。但只有'错误'被触发了。请求总是以红色显示,但有200个响应代码。响应数据显示大小为23个字节,但该值始终为空白。
但是,如果我直接在浏览器窗口中输入URL和参数,它可以正常工作,并显示预期的json字符串。
我以前使用过这种模式,但是nodejs和angularjs一起工作。但这次REST提供程序是一个非Java应用程序。我怀疑这是问题所在,但是当我直接在浏览器中输入REST URL时,它可以正常工作。
我在这里想念的是什么?
有没有更好的工具可以帮我调试?
注:
是的,这是一种非常不安全的身份验证方式,但它是我的出发点。
答案 0 :(得分:0)
你的ploblem极有可能是从你的资源管理器中打开index.html,因为请求不会来自localhost,而且localhost服务器会阻止对Chrome控制台中的跨源请求请求你可能会看到一条消息说
XMLHttpRequest无法加载'
http://localhost:7777
'。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。来源'您的index.html位置'因此不允许访问。
以避免您应该从http://localhost
向http://localhost
(同一服务器)发出请求,或者告诉您的服务器接受跨源请求