javascript对URL中的参数进行简单加密处理

javascript的api本来就支持Base64,因此我们可以很方便的来进行编码和解码。

var encodeData = window.btoa("name=xiaoming&age=10")//编码

var decodeData = window.atob(encodeData)//解码。

下面来个具体的例子来说明如何对url中参数进行转码,并取得解码后的参数

假如要跳转的url = "stu_info.html?name=xiaoming&age=10"

转码:url = "stu_info.html?"+window.btoa("name=xiaoming&age=10");

跳转:window.open(url)或者window.locaton.href = url;

解码:解码时我们首先要从url中获得参数列表,

我们可以通过var paramsString = window.location.search来获取url中?号开始的内容(url的查询部分)即"?name=xiaoming&age=10";

然后去掉?号 paramsString  = paramsString.substring(1) //"name=xiaoming&age=10"

去掉& paramsString  = paramsString.split("&");//["name=xiaoming","age=10"]

 

需要指出的是 window.btoa这中编码方式不能直接作用于Unicode字符串。只能将ascci字符串或二进制数据转换成Base64编码过的字符串。如果要对Unicode字符进行编码可以将做如下转换。

var encodeData = window.btoa(window.encodeURIComponent("name=小明&age=10"))//编码

var decodeData = window.decodeURIComponent(window.atob(encodeData))//解码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fibinary Numbers

http://acm.hust.edu.cn/vjudge/contest/view.action?cid30506#problem/V 题意:从右向左,每一个位数,分别表示一个fibonacci数,1表示有,0表示没有;求两个数的和,同样按照这种形式存储 #include…

移动web开发DRP问题

DPR dpr问题是移动端web开发上需要注意的问题,用大白话说就是,代码中所设置的像素值实际上是虚拟像素,手机屏幕上的像素实际为物理像素,原始的手机,虚拟像素与物理像素是1:1覆盖的,但随着移动端屏幕的技术发…

HTML元素title里面如何换行

在调试代码的时候我就遇到一个问题,HTML元素title里面通常只显示一行,那我想要他换行,就是多行显示,如何实现?JS代码里面比如Alert里面又该如何换行? 经过我的一番实验 要实现这种效果有几种方法&#xff0…

A20 GPIO中断类型差别结果迥异的问题思考

A20GPIO中断类型差别结果迥异的问题思考 最近在使用全志A20做开发时,发现在处理中断的时候,用电平触发模式,报中断比较乱,用边沿触发则很稳定,不会乱报。笔者感到比较困惑,笔者用电平触发写的code如下&…

div内图片和文字水平垂直居中

大小不固定的图片、多行文字的水平垂直居中 本文综述 想必写css的都知道如何让单行文字在高度固定的容器内垂直居中,但是您知道或者想过让行数不固定的文字在高度固定的容器内垂直居中呢?本文将会告诉你如何实现多行文字的垂直居中显示。 关于图片垂直居…

sticky-footer实现记录

sticky-footer是css中的一个经典问题: 当页面内容超出屏幕,页脚模块会像正常页面一样,被推到内容下方,需要拖动滚动条才能看到。 而当页面内容小于屏幕高度,页脚模块会固定在屏幕底部,就像是底边距为零的…

敏友的【敏捷个人】有感(3): 有感于“敏捷个人”讨论与练习

2010年我对个人管理进行了自己的一些思考,在2011年提出敏捷个人概念,并且在线上、线下进行了多次交流,在一些大会上也做过分享。现在,已经有很 多IT和非IT的敏友们知道并在践行敏捷个人,帮助自己更快的成长。我收到大家…

jQuery编写插件

引言: 在项目中不同页面经常要用到已经写好的交互,比如弹窗,比如下拉菜单,比如选项卡,比如删除... 此时如果每次都把代码copy一份无疑是一件比较麻烦并且无趣的事情,而且个人认为有些low了,我们…

webstorm中nodejs代码提示

preferences->languages&frameworks->Node.js and Npm中选择一个本地的node版本 preferences->languages&frameworks->JavaScript->Libraries 勾选node.js Core 回到代码

9012教你如何使用gulp4开发项目脚手架

本文将会介绍如何使用gulp4来搭建项目脚手架,如果您还在使用gulp3或更老的版本,您也以通过本文的一些思想将之前的项目进行完善,更新。如果gulp不是你们团队的重点,也可以移步我的另一篇文章:用 webpack 4.0 撸单页/多页脚手架 (j…

nodejs模块

nodejs模块遵循commonJS规范,但并不是完全实现规范,主要使用require引入模块、使用exports导出模块。 导出属性或方法 使用exports mouduleA.js: var say function(world){console.info("say: "world); }var sing function(wo…

Array.prototype.slice.call(arguments)

Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换)如:1 var a{length:2,0:first,1:second}; 2 Ar…

动态内存分配导致内存泄漏之处

摘要:举了几个动态内存分配过程中,发生内存泄漏的例子 1. 分配了内存,却没有及时删除,导致泄漏 1: void doSomething() 2: { 3: int *pnValue new int; 4: } 2. 为指针变量分配了一个内存,然后又让指针变量指向其他的值,导致…

nodejs常用模块-url

URL nodejs中针对url的常用方法。 node下打印url,结果: 引入url模块 var url require(url) 1、parse方法 将url解析成对象,parse方法原型: url.parse(urlStr[, parseQueryString][, slashesDenoteHost]) 可传递三个参数…

常用的javascript设计模式

请坚持 什么是设计模式 百度百科: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式…

express项目创建

1、安装项目生成器 cnpm i express-generator -g express4.0以后,express与express-generator包分离,全局使用express命令生成项目骨架时应该安装express-generator包。 2、生成项目骨架 express server 默认使用的是jade模板,使用ejs模…

设置Jexus开机启动

把jexus做成系统服务,就像windows服务一样,可以设置开机启动就可以了。 第一、进入目录 /lib/systemd/system/ 第二、新建文件 vi jexus.service 文件内容 [Unit] Descriptionjexus Afternetwork.target[Service] Typeforking ExecStart/usr/jexus/jw…

iOS警告-This block declaration is not a prototype

关于警告 我们定义一个不带参数的block,通常是如下的方式 1typedefvoid (^UpdateSwichBtnBlock)();在xcode9中会提示一个警告 12This block declaration is not a prototypeInsert ‘void解决方式可以是如下的几种 1typedefvoid (^UpdateSwichBtnBlock)(void);但是这样,很多第三…

mac环境mongodb安装与配置

一、安装 MAC环境安装mongodb有两种方式,一种方式是通过下载安装包,另一种方式是通过homebrew。 1、安装包方式 从mongodb官网可以下载MAC安装包:https://www.mongodb.com/download-center#community 或者使用curl下载 # 进入 /usr/loca…

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型...

以下为借鉴 var stack1 [], stack2[]; function push(node){stack1.push(node);}function pop(){if(stack2.length){return stack2.pop();}else{if(stack1.length){var len stack1.length;for(var i0;i<len;i){stack2.push(stack1.pop());}return stack2.pop()}else{retur…