如何使用 angular.js 进行基本的 http 授权? [复制]

Posted

技术标签:

【中文标题】如何使用 angular.js 进行基本的 http 授权? [复制]【英文标题】:How make basic http authorization with angular.js? [duplicate] 【发布时间】:2014-07-03 16:05:16 【问题描述】:

我的后端结构类似于this 文章。

所以我想使用 angular.js 发送 GET 请求,类似于 curl 的做法,通过 http 标头进行授权:

$ curl -u miguel:python -i -X GET http://127.0.0.1:5000/api/token
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 139
Server: Werkzeug/0.9.4 Python/2.7.3
Date: Thu, 28 Nov 2013 20:04:15 GMT


  "token": "eyJhbGciOiJIUzI1NiIsImV4cCI6MTM4NTY2OTY1NSwiaWF0IjoxMzg1NjY5MDU1fQ.eyJpZCI6MX0.XbOEFJkhjHJ5uRINh2JA1BPzXjSohKYDRT472wGOvjc"

更新:

This 不是重复的,答案没有描述如何在 http 标头中一起发送用户名和密码,最后一条评论指出解决方案根本不起作用。请注意,即使是我的问题,或者随机用户无法理解该问题如何通过 http 标头发送用户名:密码.. 还没有人告诉过关于 base64 的任何事情.. ?:)

更新 2

完整和正常的答案是:

$http.get(config.apiUrl + '/api/token',  headers: 'Authorization': 'Basic '+ base64.encode( $scope.username + ':' + $scope.password)  )

更新 3

这并不像我想的那么容易,在 .get() 中传递这个字典不会解决任何问题。我发现这个答案很有帮助:How do I get basic auth working in angularjs?

【问题讨论】:

用户名和密码在哪里?您有一个 JWT,但您会在 登录后获得此信息。您只是在问如何向 Angular HTTP 请求添加标头吗? @holms,请概述您遇到的问题。不要指望 SO 用户通读您链接到的文章以(也许)了解您的问题。你到底想达到什么目标,你面临的障碍是什么,到目前为止你做了什么? 我认为这正是他所需要的,问题也有Basic Auth。 顺便说一句,它不是重复的,在那个问题中,没有告诉如何将 USERNAME 和 PASSWORD 一起发送,只有令牌.. 或者里面有什么废话。最后一条评论指出解决方案根本不起作用 @holms 基本身份验证是使用标头 Authorization: Basic Base64('user:password') en.wikipedia.org/wiki/Basic_access_authentication 创建的 【参考方案1】:

要向您的服务器发送 GET 请求,您可以使用 $http 服务,并设置标头:

$http.defaults.headers.get = 'X-Access-Token':token;

 $http.get('/api',params:)
      .success(function(response)
         //success
      ).error(function()
         //error
      );

【讨论】:

没有回答我的问题,如何发送基本的http auth?但是感谢您提到X-Access-Token,因为这将在每个下一个请求中使用! :)【参考方案2】:

Http URI 还允许您传递用户名和密码。 试试这个:

http://miguel:python@127.0.0.1:5000/api/token

【讨论】:

我认为它只由浏览器处理,因为用户/密码需要在标头中发送 base64,但不是 100% 确定。 优雅的解决方案! :D 我怎么能忘记.. @jcubic 我想知道如果密码将包含 @ 和 : 字符,这是否可行? :) 无论如何要逃避他们? @holms 从我标记为重复的答案中尝试解决方案。它在标头内使用 base64。这就是浏览器处理基本身份验证的方式。 作为最后的评论用户在那里,所选答案中的解决方案不起作用,对我来说实际上是一样的..

以上是关于如何使用 angular.js 进行基本的 http 授权? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular JS 抓取网站以获取基本数据(Facebook 之类的链接共享模块)

如何使基本身份验证作为 Angular JS/Spring 启动应用程序中 keycloak 的替代品

如何在使用 Angular js 显示数据时进行分页?

如何使用Angular JS构建应用程序

跨模板和视图路由的基本元素绑定,Angular JS

如何在 Angular.js 中延迟路由定义?