Masquer les paramètres d'URL et de les lire
Est il une méthode pour masquer les paramètres d'URL et puis lire les paramètres cachés avec le code? Par exemple, j'ai ceci dans ma page:
"example.com/transaction.html?price=10".
J'ai essayé d'encoder en Base64, mais il ne fonctionne pas comme prévu (encodage des œuvres, décodage pas), donc je veux cacher soit le prix=10 ou de la transaction.le html?prix=10.
J'ai entendu dire que AngularJS pourrait masquer les paramètres, mais peut-il lire "caché" paramètres " ou comment ça fonctionne?
Merci d'avance!
function getUrlVar() {
var result = {};
var location = window.location.href.split('#');
var parts = location[0].replace(/[?&]+([^=&]+)=([^&]*)/gi,function(m,key,value) {
result [key] = value;
});
return result;
}
- Êtes-vous essayer de lire les paramètres sur le serveur ou le client?
- À partir du client je crois
- vous devez fournir un jsfiddle ou quelque chose de similaire afin que nous puissions vous aider.
- ou vous pouvez simplement hachage de la
price=10
à faire meanless à un utilisateur, mais le serveur sera en mesure de hachage et de comprendre (ou de votre côté client js volonté de hachage/de hachage de trop)? - puis-je vous demander votre scénario? avez-vous de l'un des produits qui a une
price
? si la réponse est oui, le produit aid
? - Comment puis-je hachage il? Et oui, mon produit a ce prix <span id="totalPrice7"> <script> getPrice(9,"totalPrice7") </script> </span>, et oui, il y a et id. L'encodage se fait, mais pas de décodage.
- par masquer les paramètres d'url vous dire que votre adresse de site web devrait toujours ressembler à
www.something.com
, mais encore le chargement des données ou lors de l'extraction des données, l'adresse doit être codé que personne n'est capable de comprendre ? - veuillez indiquer votre travail actuel exemple sur un violon: jsfiddle.net et modifiez votre réponse originale à cette question avec l'URL, afin que nous puissions voir ce que vous faites et vous aider à facilement.
- Je voudrais masquer le prix=10 à partir de l'url, il pourrait ressembler à example.com/transaction.html mais sans l' ?prix=10. Et @JVLobo, je n'ai pas un exemple de cacher le paramètre, le décodage ne fonctionne tout simplement pas et j'ai pensé à utiliser une autre méthode. Fondamentalement, j'ai essayé ceci: un.href = "transaction.html?" + btoa("prix=50"); <- Cela fonctionne, mais le décodage n'est pas: var finalPrice = atob(getUrlVar()["prix"] * basePrice);
- vous avez quelque chose alors... pour obtenir de l'aide serait plus facile pour les gens d'ici ont que sur un violon ou au moins bien formatés sur votre question de départ
- Oui, je dois l'encodage en Base64. Simplement btoa(variable) et atob(méthode) et il ne fonctionne pas. Maintenant, je veux un methot qui CACHE les paramètres de l'url, pas coder
- c'est ça le truc... vous disposez d'un code que vous n'avez pas posté. Vous avez un getUrlVar() fonction que nous ne savons pas ce qu'il fait... c'est pourquoi je vous ai dit de fournir le code que vous utilisez
- Ce que vous demandez n'a absolument aucun sens pour moi. Parlez-vous de faire une requête HTTP POST avec des données de formulaire? Parlez-vous de cryptage de la chaîne de requête? Parlez-vous de la signature de la chaîne de requête, de sorte qu'il ne peut pas être facilement modifié?
- J'ai répondu quelque chose pour vous... vous ne savez pas si c'est ce que vous avez besoin, mais là vous l'avez!
Vous devez vous connecter pour publier un commentaire.
Si vous ne voulez pas afficher les paramètres de la requête pour les utilisateurs dans la barre d'adresse, vous pouvez le faire facilement à l'aide de Javascript ou jquery également besoin de passer angulaire juste pour cela.
Ce que vous pouvez faire, c'est plutôt de l'aide
<a href = ....> </a>
pour extraire les données pour que la requête qui permet de rediriger l'utilisateur vers le lien direwww.something.com?price=10
au lieu de cela, ce que vous pouvez faire est d'utiliser un bouton comme<button type="button" onclick="fetch()">Fetch Data</button>
et dans votre fichier Javascript vous pouvez faire un
GET or POST
demande de cette façon, les paramètres que vous souhaitez cacher " n'apparaît pas, c'est juste ces sera envoyer au serveur en arrière-plan sans votre changement d'adresse.Pour faire de cette
GET Request
vous pouvez faire quelque chose comme en supposant que vous souhaitez envoyer des données à partir d'un champ de texte :JS:
HTML:
Maintenant vous avez obtenu les données en arrière-plan sans montrer les paramètres de l'utilisateur dans leur barre d'adresse.
AngularJS passe les paramètres en utilisant $urlRouterProvider,
AngularJS $urlRouterProvider
Vos paramètres est inclus comme ceci:
et votre paramètre n'est pas inclus dans le lien, vous pouvez exécuter $état.aller en fonction de vos paramètres dans le contrôleur.
Mais je pense aussi que AngularJS à l'aide d'Ajax mécanisme donc en fait, il ne signifie pas que la page est rechargée, juste l'url et le js, le html est chargé
C'est juste le angularJs façon et ne vont pas à votre besoin.
J'ai trouvé le lien peut être utile:
Code-projet comment masquer les paramètres dans l'url
how can i get params from controller?
state
, parce que c'est plus dynamiqueJ'ai créé un extrait pour vous, je pense que quelque chose comme ça, c'est ce que vous demandez.
Je l'ai fait rapidement, alors qu'il avait besoin de beaucoup d'amélioration, mais au moins vous avez quelque chose pour commencer:
JS:
HTML:
Prendre un coup d'oeil et laissez-moi savoir.
Cheers!
Vous pouvez utiliser input type hidden de transférer de la valeur d'une page à l'autre. Par exemple