Donc je suis exclu. Je sais qu'il y a beaucoup de codeurs / décodeurs de base64 pour JS, mais pas pour la variation de base64url modifiée (et Facebook-Favorisée). Jusqu'à présent, la recherche sur Stackoverflow est devenue sec. P>
Oui, je pourrais utiliser PHP ou une autre bibliothèque côté serveur pour décoder cela, mais j'essaie de garder cette universelle quelle que soit la plate-forme que j'utilise ... Par exemple, si je devais héberger un HTML- Seule l'application Facebook sur Amazon S3 / Cloudfront et utilise uniquement leur JS SDK et JQuery pour s'occuper des formulaires de traitement et obtenir des données. P>
Cela dit, quelqu'un connaît-il des décodeurs spécifiques à base64url pour JavaScript? P>
Merci d'avance! P>
3 Réponses :
var str = "string"; var encoded = btoa(str); // encode a string (base64) var decoded = atob(encoded); //decode the string alert( ["string base64 encoded:",encoded,"\r\n", "string base64 decoded:",decoded].join('') );
Cela utilise les chariots de cartographie normaux et non url-sécurité. Voir RFC 4648 §5 ( en.wikipedia.org/wiki/base64 )
solution: à l'aide de ce grand codé / décode de base64: http://code.google.com/p/stringencoders/source/browse/trunk/javascript/base64.js p> dépend également de La méthode PADRIGHT: P> String.prototype.padRight = function(n, pad){
t = this;
if(n > this.length)
for(i = 0; i < n-this.length; i++)
t += pad;
return t;
}
Salut Siméon ... Je pense que cela pourrait fonctionner, mais je pense que j'ai aussi besoin de remplacer "-" et "+" avec "_" et "/" - bon point de départ cependant. J'espérais en trouver un avec tout emballé dans la même bibliothèque, mais je suppose que je pourrais simplement avoir à modifier une bibliothèque un peu après.
Étrange ... En fait, je viens de faire une version JS de cette réponse: Stackoverflow.com/Questtions/1228701/...
Utilisez-le avant de décoder:
var decode = function(input) { // Replace non-url compatible chars with base64 standard chars input = input .replace(/-/g, '+') .replace(/_/g, '/'); // Pad out with standard base64 required padding characters var pad = input.length % 4; if(pad) { if(pad === 1) { throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding'); } input += new Array(5-pad).join('='); } return input; }
Ah ces moments où vous souhaitez que vous puissiez uplifier deux fois :)
base64url code> codage est spécifié dans RFC 4648, les codages de données de base16, base32 et base64 . La seule différence entre
base64 code> et
base64url code> est deux valeurs (62 et 63). Il suffit de remplacer
"+" code> avec
"-" code> et
"/" code> avec
"_" code>.
@jww serait-ce correct?
var base64url = fonction (ARR) {retour BTOA (astr.replace (/ \ + / g, '-'). Remplacez (//// g, '_')). Remplacer (/ \ = = = + $ / M, '')} code> avec la dialogue
= code> Strave?