我正在开发Chrome扩展程序。完全是新的。
对于loggin部分,我想将输出发布到我托管Elastic的服务器。
我通过XMLHttpRequest进行了工作设置。在upLog.open()
里面我有我的弹性环境的凭据。
但是:我不想在我的Chrome扩展程序中对我的弹性凭据进行硬编码。
隐藏这些内容的最佳方法是什么?
我目前的日志记录功能:
function sendLog(log){
let upLog = new XMLHttpRequest();
upLog.open('POST', 'https://xxxxx.us-east-1.aws.found.io:9243/chrome-extension-logging/log_objects/' , true , 'username', 'password' );
upLog.onload = function (oEvent) {
if (oEvent.currentTarget.status !== 201) {
setErrorBadge();
console.log('Can\'t upload Error Log to service', oEvent.currentTarget.responseText);
showAlert('Error', 'Can\'t upload Error Log to service');
return { status: false, data: {} };
} else {
console.log('Log uploaded');
setSuccessBadge();
showAlert('Success', 'Log uploaded');
return { status: true, data: {} };
}
};
upLog.onerror = function (oEvent) {
setErrorBadge();
console.log('Can\'t upload log to service', oEvent);
showAlert('Error', 'Can\'t upload log to service (server error)');
return { status: false };
};
upLog.setRequestHeader('Content-Type', 'application/json');
upLog.send(JSON.stringify({ item : log }));
}
答案 0 :(得分:0)
尝试Streamlining the Sign-in Flow Using Credential Management API。
使用Credential Management API,您可以启用navigator.credentials.requireUserMediation()
的中介模式。只要打开了用户的原始中介状态,并使用unmediated: true
navigator.credentials.get()
,该功能将以undefined
解决。