Javascript 带有beforeSend但凭证隐藏的ajax

Javascript 带有beforeSend但凭证隐藏的ajax,javascript,ajax,symfony,Javascript,Ajax,Symfony,我有一个ajax调用: $(document).ready(function() { $.ajax({ type: 'GET', beforeSend: beforeSend, url: someUrl 对于发送前的,我得到: const beforeSend = function ( xhr ) { xhr.setRequestHeader( 'Authorization', 'Basic ' + Base64.encode( User

我有一个ajax调用:

$(document).ready(function() {
    $.ajax({
        type: 'GET',
        beforeSend: beforeSend,
        url: someUrl
对于发送前的
我得到:

const beforeSend = function ( xhr ) { xhr.setRequestHeader( 'Authorization', 'Basic ' + Base64.encode( UserPass ) );};
与:


[代码>警察基本64={编码:[编码:[编码:[编码:[编码:[编码]警察基本64=[编码:[编码:[编码:[编码:[编码:[编码:”[编码:[编码:[编码:[编码:[编码:[编码:[编码:[编码:[编码:[编码:[编码(e);而(f>2;o=,(n&3)4)4;u=(r&15)6;a=a=a=a=a&63;若(r&15)6)a=a=6;a=6;a=a=a=a=a=a=63;a=63;若(若(若(isNaN(r)若(r)若(r)男(r)若(r)若(r)若(r)若(r)男(r)男(r)男(r)男(r)男(r)男(r)男(r)男(r)男(r)男(r)男)男这个。_keyStr.charAt(u)+这个。_keyStr.charAt(a) }返回t},解码:函数(e){var t=“”;var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^a-Za-z0-9\+\/\=]/g,”);while(f>6&63| 128);t+=String.fromCharCode(r&63|128)}返回t},{u utf8\u解码:函数(e){var t=“”;var n=0;var r=c1=c2=0;while(n如果您确实需要对凭据保密,但浏览器无法查看,则不应将其保存在浏览器中。您可以将服务器用作代理。对服务器进行ajax调用,并让服务器对服务进行授权调用


另一方面,如果凭据是特定于每个用户的,您可以使用它们,只需确保您正在进行HTTPS呼叫,这样就没有人可以看到请求的正文。

Cookie是存储在客户端末尾的文件(在这种情况下,它由浏览器存储)它们包含用户关于网站的重要信息。希望cookie中有会话id。会话id是标识会话的值。会话是一个概念,表示通过频道(在本例中为浏览器)使用服务(在本例中为网站)

您可以通过
document.cookie
(javascript代码)获取页面的cookie。运行

您将在浏览器控制台中看到给定站点的cookie值。cookie可以包含多个值,因此有几个库旨在简化您与cookie的交互

编辑:


我们的想法是使用会话id,因为在这种情况下,即使会话id被盗,您的用户名和密码仍将保留在您的手中。

我正在尝试“您的应用程序可以进行一次身份验证并设置会话cookie,然后在资源文件夹上创建处理程序以检查该身份验证cookie。”但是谢谢,你是对的。我将从ajax调用一些PHP路由,并通过PHP使用凭据(我已经这样做了,但不想在我的javascript中更改整个代码),我不知道如何执行你所说的,谢谢。解决方案的一个尝试是使用JWT(json web令牌)通过此捆绑包LexikJWTAuthenticationBundle,您可以与symfony guard结合。通过此捆绑包,您的应用程序可以对每个用户进行一次身份验证,并向您发送凭证令牌,您可以将其存储在本地存储中,并使用它(例如在授权http头中)执行每个请求以保护资源。这只是一个想法。
const Base64 = {_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}};

const UserPass = 'SomeLogin:SomePass'
console.log(document.cookie);