簡體   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