2014-11-21 64 views
0

试图从角度做一些基本的REST服务,但我所得到的只是一个空的错误响应。角js空错误响应

我直接打开index.html我的电脑上(不知道这是问题),然后单击“登录”最终调用我的控制器:

$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个功能中的断点:successerrorthen。但只有'错误'被触发。请求总是以红色显示,但是有200个响应代码。响应数据显示23个字节的大小,但该值始终为空。

但是,如果我直接在我的浏览器窗口中键入URL和参数,它工作正常,并显示预期的json字符串。

我以前使用过这种模式,但是与nodejs和angularjs一起工作。但是这次REST提供者是一个非Java应用程序。我怀疑是这个问题,但是当我直接在浏览器中输入REST url时,它工作正常。

我在这里错过了什么?
有没有更好的工具可以用来帮助调试呢?


注:
是的,这是一个非常不安全的方式做认证,但我的出发点。

回答

0

由于请求不会来自本地主机,因此本地主机服务器将阻止请求在Chrome控制台中阻止交叉来源请求,您很可能会看到消息说

XMLHttpRequest无法加载'http://localhost:7777'。请求的资源上没有“Access-Control-Allow-Origin”标题。因此,'你的index.html位置'不允许访问。

避免你应该要求从http://localhosthttp://localhost(同一台服务器)或者告诉你的服务器接受跨起源请求

+0

好,我尝试使用一个Web服务器(默认的Python的Web服务器)的东西,并使用Firefox的更新版本。这个问题的确与跨站点脚本有关。由于我可以控制端口7777上的服务器,因此我可以添加适当的标题以允许CORS。但谷歌搜索给出了很多冲突的信息...我需要添加什么标题(S)? – Jon 2014-11-26 19:15:55

+0

你究竟想要达到什么目的?和你得到什么错误? – Strife86 2014-11-27 14:45:04

+0

顺便说一下你是否在你的请求中加入'withCredectials'选项设置为true?帮助您了解旅游问题,我认为这对您的问题有用http://www.html5rocks.com/en/tutorials/cors/ – Strife86 2014-11-27 14:49:24