如何使用 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 之类的链接共享模块)