我已经在SO中搜索了一些关于此的线程,但是只能找到一些解释了这个头的内容或者如何在c#中获取授权头但是我不想从服务器端但是从客户端读取它侧。
有没有办法从浏览器获取Base64编码标题“授权”? 我想实现一个您可以登录的工具,如果您点击一个特定按钮,您的用户名将被保存。
我的问题是浏览器自动执行授权,使用jQuery和JavaScript方法,您只能设置请求标头并获取响应标头。我找不到获取请求标头的方法。
库gethttp可以获得一些标题,但不能获得授权标题。 我的猜测是这个标题是隐藏的。
我正在通过SVN登录,浏览器会在您进入网站时进行授权。
只有用户名就足够了。 我正在寻找用户无需输入用户名的解决方案。
答案 0 :(得分:4)
我假设您正在尝试使用Basic Realm授权机制
这已经在Stackoverflow上得到了回复,涉及$.ajax()
jquery对象
How to use Basic Auth with jQuery and AJAX?
所以请不要在这个上投票给我
$.ajaxSetup({
headers: {
'Authorization': "Basic XXXXX"
},
data: '{ "comment" }',
success: function (){
alert('Thanks for your comment!');
}
});
其中XXXXX是您的用户名:密码base64编码
答案 1 :(得分:0)
无法获取CURRENT页面请求的标头。这已被问过几次on SO。
但是,您可以发出新请求并检索该请求的标头。通过这种方式,您可以获得Basic Auth标头,base64解码该字符串,然后您拥有用户名(以及密码)。
使用@ broc.seib提供的in this answer函数可以使用javascript解码base64。
decodeBase64 = function(s) {
var e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,L=s.length;
var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for(i=0;i<64;i++){e[A.charAt(i)]=i;}
for(x=0;x<L;x++){
c=e[s.charAt(x)];b=(b<<6)+c;l+=6;
while(l>=8){((a=(b>>>(l-=8))&0xff)||(x<(L-2)))&&(r+=w(a));}
}
return r;
};
答案 2 :(得分:0)
您可以使用本机fetch
API:
fetch("http://localhost:8888/validate",{
method:"GET",
headers: {"Authorization": "Bearer xxxxx"}
})
.then(res => res.json())
.then(
(result) => {
// do something
},
// Note: it's important to handle errors here
// instead of a catch() block so that we don't swallow
// exceptions from actual bugs in components.
(error) => {
// handle error
}
)