角度摘要身份验证
Posted
技术标签:
【中文标题】角度摘要身份验证【英文标题】:Angular Digest Authentication 【发布时间】:2014-06-14 05:24:35 【问题描述】:我正在尝试连接到我家中的家庭自动化服务器上的 RESTFul API(不需要如此大规模的安全性)。当我尝试在没有凭据的情况下连接时,我得到:
[Error] XMLHttpRequest cannot load http://localhost:8176/devices/. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
文档说:
Indigo 使用“digest authentificaction”(不是基本的也不是令牌)
curl -X PUT --digest -u username:password -d value=value http://IPAddress:8176/variables/VariableToChange
curl -X PUT --digest -u admin:p@ssw0rd -d value=true http://IPAddress:8176/variables/Var1
要获取设备列表,我可以使用以下 3 个之一:
http://127.0.0.1:8176/devices/
http://127.0.0.1:8176/devices.xml/
http://127.0.0.1:8176/devices.txt/
我完全不知道如何通过信条。到目前为止,这是我的代码:
function DeviceController($scope, $http)
$http.get("http://localhost:8176/devices/")
.then(function (results)
//Success;
console.log("Succss: " + results.status);
$scope.devices = results.data;
, function (results)
//error
console.log("Error: " + results.data + "; "
+ results.status);
$scope.error = results.data;
)
;
谁能指出我正确的方向?
谢谢
标记
【问题讨论】:
我认为家庭自动化服务器需要尽可能多的安全性。 @icebreaker - 不在安全的本地网络上 【参考方案1】:您的服务器必须配置为接受CORS (Cross-origin resource sharing)。
编辑: 看起来您的 Indigo(不知道它是什么)服务器不是为您的 Angular 应用程序服务的服务器。有关如何启用 CORS,请参阅您服务器的文档。
至于在您的请求期间传递您的凭据,请执行以下操作:
$http(
method: "GET",
url: "http://localhost:8176/devices/",
headers: "Authorization": "Basic " + btoa("admin:p@ssw0rd"),
)...
【讨论】:
@gframontina 感谢您的回复。服务器最终将是 OS X 上的 apache。现在我正在 Visual Studio 中开发,所以它是 asp Web 服务器。我发现我必须使用摘要授权,我可以将“基本”换成摘要吗? (我猜不是:-(。问候马克 快速搜索 angular + digest 给了我几个帮助处理整个过程的模块:https://github.com/PatrickHeneise/angular-digest-interceptor 和 https://github.com/tafax/angular-digest-auth。我没有使用任何这些,但它们似乎使任务更容易。至于配置您的服务器以启用 CORS,我在 .NET 领域没有太多经验,但我向您保证这是可能的。 :-) 感谢您的回复。我现在已经关闭了身份验证,但是 CORS 正在杀死我。我是用VS开发的,所以我的“web服务器”就是VS启动调试的asp.net web服务器。我将此添加到 web.comfig,但仍然没有运气 看看这些:enable-cors.org 和 asp.net/web-api 所以,我得到了它的工作。原来我试图连接的服务器是用 CherrPy 编写的。我所要做的就是添加 cherrypy.response.headers['Access-Control-Allow-Origin'] = '*' 显然,一旦我完成测试,我会进一步限制它。感谢大家的帮助!以上是关于角度摘要身份验证的主要内容,如果未能解决你的问题,请参考以下文章