Aquí hay un ejemplo de Javascript para reproducir el problema:
let a = "qNqrdXUrk5S7dCM1MAYH3qSVDXznb-6prQoGqiACR10="; console.log(atob(a));En Safari obtenemos:
Error de carácter no válido: la cadena contiene un carácter no válido.
En Chrome obtenemos:
DOMException no detectada: no se pudo ejecutar 'atob' en 'Ventana': la cadena que se va a decodificar no está codificada correctamente.
Puedo decodificar la cadena anterior en base64decode.org. Por cierto, el valor pretende ser una secuencia aleatoria de bytes, no cualquier tipo de cadena legible por humanos. atob debería encargarse de eso.
Desde la sección "Diseño" de esa misma página :
La implementación Base64 de MIME usa AZ, az y 0-9 para los primeros 62 valores, así como "+" y "/" para los dos últimos. Otras variaciones, generalmente derivadas de Base64, comparten esta propiedad pero difieren en los símbolos elegidos para los dos últimos valores; un ejemplo es la variante segura de URL y nombre de archivo "RFC 4648 / Base64URL", que usa "-" y "_".
JS usa la codificación basada en MIME y, por lo tanto, el - en su cadena inicial no es válido. Es probable que funcione en el decodificador en el sitio al detectar qué caracteres están en la cadena de entrada y elegir el formato de decodificación adecuado en lugar de usar ciegamente atob() .