繁体   English   中英

从 HTTP-Request 标头获取授权

[英]Get Authorization from HTTP-Request header

我已经在 SO 中搜索了一些关于此的线程,但只能找到一些解释此标头的用途或如何在 c# 中获取授权标头的内容,但我不想从服务器端读取它,而是从客户端读取它。

有没有办法从浏览器中获取 Base64 编码的标头“授权”? 我想实现一个工具,您可以在其中登录,如果您单击特定按钮,您的用户名将被保存。

我的问题是浏览器会自动进行授权,而使用 jQuery 和 JavaScript 方法,您只能设置请求头并获取响应头。 我找不到获取请求标头的方法。

gethttp可以获得一些标头,但不能获得授权标头。 我的猜测是这个标题是隐藏的。

我正在通过 SVN 登录,浏览器在您进入网站时进行授权。

只有用户名就足够了。 我正在寻找用户不必输入用户名的解决方案。

我假设您正在尝试使用 Basic Realm 授权机制 这已经在 Stackoverflow 上得到了回复,并且涉及$.ajax() jquery 对象。
如何在 jQuery 和 AJAX 中使用基本身份验证?
所以请不要在这个问题上给我投票

$.ajaxSetup({
  headers: {
    'Authorization': "Basic XXXXX"
  },
  data: '{ "comment" }',
  success: function (){
    alert('Thanks for your comment!'); 
  }
});

其中 XXXXX 是您的用户名:密码 base64 编码

您可以使用本机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
  }
)

无法获取当前页面请求的标头。 这已在 SO 上多次询问。

但是,您可以发出新请求并检索该请求的标头。 这样你就可以得到 Basic Auth 标头,base64 解码那个字符串,然后你就有了用户名(还有密码)。

可以使用@michael 在评论中建议的以下函数在 javascript 中解码 base64。

window.atob("base64encodedString");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM