Below steps are done in this example
(Note: This works only in server) Inspect and check in Network -> All -> select <filename> (secret.html) -> Headers -> Request Headers -> Here you can see the property "Authorization: Basic S2FydGhpOkthcnRoaSgp" <<Base64 token>> which you setted up, by geting from user input & password and ket it as Authorization value.
document.getElementById("myForm")
.addEventListener("submit", loadSecret);
function loadSecret(e){
e.preventDefault(); //Preventing Default form submission
console.log(e); //has the event object
let username_val = document.getElementById('username').value;
let password_val = document.getElementById('password').value;
//console.log(password_val)
//create our own Base64 token
let encodedData = window.btoa(username_val + ':' + password_val)
//console.log(window.btoa('Karthi'))
//console.log(encodedData)
let authToken = `Basic ${encodedData}`;
console.log(authToken)
//Setup our Ajax ##############################
let h = new Headers();
h.append('Authorization', authToken);
let url = './protected/secret.html';
let req = new Request(url, {method: "GET", headers: h});
fetch(req)
.then(data => data.text())
//.then(message => console.log(message))
.then(message => document.getElementById('demo').innerHTML = message)
.catch(err => {console.log(err);})
}