Javascript 从HTTP请求头获取授权
我已经在SO中搜索了一些关于此的线程,但只能找到一些解释了此头的用途或如何在c#中获取授权头的内容,但我不想从服务器端而是从客户端读取它 有没有办法从浏览器中获取Base64编码的标题“授权”? 我想实现一个工具,你可以登录,如果你点击一个特殊的按钮,你的用户名将被保存 我的问题是浏览器会自动进行授权,使用jQuery和JavaScript方法,您只能设置RequestHeader和获取ResponseHeader。我找不到获取RequestHeader的方法 库可以获取一些头,但不能获取授权头。 我猜这个标题是隐藏的 我正在通过SVN登录,浏览器会在您进入网站时进行授权 只有用户名就足够了。Javascript 从HTTP请求头获取授权,javascript,jquery,html,httprequest,Javascript,Jquery,Html,Httprequest,我已经在SO中搜索了一些关于此的线程,但只能找到一些解释了此头的用途或如何在c#中获取授权头的内容,但我不想从服务器端而是从客户端读取它 有没有办法从浏览器中获取Base64编码的标题“授权”? 我想实现一个工具,你可以登录,如果你点击一个特殊的按钮,你的用户名将被保存 我的问题是浏览器会自动进行授权,使用jQuery和JavaScript方法,您只能设置RequestHeader和获取ResponseHeader。我找不到获取RequestHeader的方法 库可以获取一些头,但不能获取授权头
我正在搜索用户不必输入用户名的解决方案。我假设您正在尝试使用基本领域授权机制 这已经在Stackoverflow上得到了回复,涉及到
$.ajax()
jquery对象。所以请不要在这件事上对我投反对票
$.ajaxSetup({
headers: {
'Authorization': "Basic XXXXX"
},
data: '{ "comment" }',
success: function (){
alert('Thanks for your comment!');
}
});
其中XXXXX是您的用户名:password base64 encoded无法获取当前页面请求的标题。这已经被问了好几次了 但是,您可以发出新请求并检索该请求的标题。这样,您就可以获得基本的Auth头,base64解码该字符串,然后获得用户名(以及密码) 可以使用@michael在注释中建议的以下函数在javascript中解码base64
window.atob("base64encodedString");
您可以使用本机
获取:
你试图在服务器端使用C#或在客户端使用Javascript来读取标题?呃,忘了这么说了。在客户端使用js。你有没有在XHR
对象中尝试.getAllResponseHeaders()
方法?你不应该相信浏览器,这就像网络俱乐部的第一条规则,来吧!嗯,它只是在内部网中使用,所以它不应该是一个大问题,除了你得到的头是那些你在xhr中发送的头,所以它们已经为你所知。这样做没有意义。不,这是不可能的。在JS中无法获取这些标题。当内置的atob
函数对base64进行解码时,为什么需要实现这个decodeBase64
函数?很好。我使用这个主要是因为我当时不知道这个内置的。
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
}
)