^常用于数据加密
常常使用日期与数据进行异或
c= a ^ b 可以推出 a = b ^ c. (常用于加密)
异或的运算方法是一个二进制运算: 两者相等为0,不等为1.
使用进制形式 防止服务器不是utf8无法解析中文
前端代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./js/querystrings.js"></script>
</head>
<body>
<script>
var str="一爱我的祖国i like javascript";
一的Unicode 编码为19968
// var str="一";
//一 异或之后是19979 下
var n=new Date().getDate();
var arr=[];
for(var i=0;i<str.length;i++){
arr.push(str.charCodeAt(i)^n);
}
var a=new Uint16Array(arr);
console.log(a);
/* console.log(a[0]);
console.log(String.fromCharCode(a[0])); */
var xhr=new XMLHttpRequest();
xhr.addEventListener("load",loadHandler);
xhr.open("POST","http://127.0.0.1:4002/a/");
// xhr.setRequestHeader('Content-type','application/content');
xhr.send(a);
function loadHandler(e){
if(xhr.readyState===4&&xhr.status<400){
}
}
</script>
</body>
</html>
后端代码实现
var http=require("http");
var querystring=require("querystring");
var req,res,data,type;
init();
function init(){
var server=http.createServer(createServer);
server.listen(4002,"127.0.0.1",listenHandler);
}
function createServer(_req,_res){
req=_req;
res=_res;
res.writeHead(200,{
"content-type":"text/plain;charset=utf-8",
"Access-Control-Allow-Origin":"*",
"Access-Control-Allow-Headers":"Content-type",
});
type=req.url.includes("?") ? req.url.split("?")[0].replace(/\//g,"") : req.url.replace(/\//g,"");
req.on("data",dataHandler);
req.on("end",endHandler);
}
function listenHandler(){
console.log("开启服务");
}
function dataHandler(_data){
var str="";
// -------16位二进制解析
var n=new Date().getDate();
//进制数据是两个一位 且是颠倒的
for(var i=0;i<_data.length;i+=2){
//如果某个字符串不够指定长度,会在头部或尾部补全。
//padStart()用于头部补全,padEnd()用于尾部补全。
var a=_data[i+1].toString(16).padStart(2,"0");
var b=_data[i].toString(16).padStart(2,"0");
var s=parseInt(a+b,16);
console.log(s);
str+=String.fromCharCode(s^n);
}
console.log(str);
data=_data+"";
}
function endHandler(){
if(req.method.toUpperCase()==="GET"){
data=req.url.includes("?") ? req.url.split("?")[1] : "";
}
try{
data=JSON.parse(data);
}catch(e){
data=querystring.parse(data);
}
var obj=data;
// var obj={a:data.a,b:data.b};
if(type==="a"){
// obj.sum=Number(data.a)+Number(data.b)
res.write(querystring.stringify(obj));
}else if(type==="b"){
// obj.sum=Number(data.a)*Number(data.b)
res.write(querystring.stringify(obj));
}
res.end();
}
版权声明:本文为weixin_44226088原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。