web-dev-qa-db-fra.com

URL-Encode VS BASE64 Encodage (USAGES)?

Je me demandais...

(sauf le problème avec la chaîne de requête BASE64 '+' Plus '+' de requête - qui est traduite en "espace" et peut être résolu par% 2b) : ---> Quel est le moyen préféré de transférer des données dans la chaîne de requête?

Les deux fonctions peuvent être utilisées via les commandes JS:

  • btoa
  • encodeUriComponent

alors je me demande (et vous):

quand Devrais-je utiliser quoi? (ive toujours utilisé encodeUriCompoonent - par instinct).

le problème que les définitions sont différentes - mais les implémentations peuvent être similaires ...

éditer

Je pense que Ive a trouvé la raison de demander .... et pourquoi personne ne l'a demandé auparavant)

enter image description here

27
Royi Namir

base64 est utilisé pour transférer des données binaires. (non pris en charge dans IE, ne peut pas encoder des caractères spatiaux.)

Encodégonant n'encore que des caractères spéciaux.

Une chose intéressante est que vous ne pouvez pas appliquer de base64 sur les chaînes UNICODE sans encodericomponent: https://developer.mozilla.org/fr/dom/window.btoa

12
meze

La réponse à cela est entièrement dépendante de votre application côté serveur.

'+' n'est pas traduit en 'espace' par le client - c'est auto- traduit en 'espace' Par quelques applications côté serveur, en grande partie pour des raisons de compatibilité en arrière (inversement, certaines applications côté serveur vont partir '+' AS '+' en conformité avec RFC3986 ).

En ce qui concerne le client - btoa() et encodeURIComponent() (et encodeURI() et escape()) codez simplement une chaîne de texte dans différents résumés cordes selon différentes algorithmes d'encodage ou d'échappement - btoa() produit généralement la plus petite chaîne résultante utilisant base64 codage, mais MEZE'S COMMENTE Re: Unicode vaut la peine d'être prise en compte ici.

La chose importante à noter est ce que votre application côté serveur (une configuration basée sur ASP.NET dans votre cas) utilise ensuite pour décoder cette chaîne de retour à sa forme d'origine.

3
lucideer