打开URL预填基本身份验证

问题描述 投票:0回答:1

在我们的局域网上,我们有一个简单的网页,其中包含可打开各种内部站点的按钮。

单击该按钮将在新选项卡中打开 URL。这是使用以下方法完成的:

var win = window.open('http://' + url, '_blank');
win.focus();

当新页面打开时,会出现基本身份验证弹出窗口,我们必须填写此内容并单击登录。有没有办法使用 javascript 或 jquery 填充此内容并单击登录?

我已尝试以下操作,但单击按钮时没有任何反应。

let xhr = new XMLHttpRequest();
xhr.open('get', url, async, username, password)
xhr.send()

谢谢

javascript jquery
1个回答
0
投票

你可以尝试这个 - 但要意识到这非常不安全。仅在仅可供需要访问身份验证保护位置的用户使用的计算机上使用此功能

const getBasicAuthHeader = (username, password) => `Basic ${btoa(username + ":" + password)}`;

const authenticateAndRedirect = (url, username, password) => {
    fetch(url, {
        method: 'GET',
        headers: {
            'Authorization': getBasicAuthHeader(username, password)
        }
    })
    .then(response => {
        if (response.ok) {
            window.location.replace(url);
        } else {
            alert('Authentication failed. Please check your credentials.');
        }
    })
    .catch(error => {
        console.error('Error during authentication:', error);
    });
}

let yourUserName = localStorage.getItem('yourUserName');
let yourPassword = localStorage.getItem('yourPassWord');
if (!yourUserName || !yourPassword) {
  yourUserName = prompt('User name?');
  yourPassword = prompt('Password? NOTE this will be stored in plaintext on this device!');
  localStorage.setItem('yourUserName',yourUserName)
  localStorage.setItem('yourPassword',yourPassword)
}
authenticateAndRedirect('/protected-page', yourUsername, yourPassword);
© www.soinside.com 2019 - 2024. All rights reserved.