服务端修改Cookie——跨域cookie发送机——通信加密——异或加密

服务端修改Cookie

请求头xhr.setRequestHeader 设置发送给服务器一个cookie,在服务端修改后,在通过响应头自定义内容写入后返回。
此过程需要注意的是,这个发送cookie是以URI编码形式发送,所以要转码之后发送。

 xhr.setRequestHeader("Set-Cookie","niuniu")

这样服务器通过req.headers方法得到一个对象也就会收到这个请求头里的这一项,是一个数组类型
在这里插入图片描述

服务端修改Cookie机器

具体步骤:

  1. 请求头设置一个Set-Cookie:niuniu牛,注意这里有个汉字
  2. 也就是先把这个汉字转成url var str = encodeURIComponent("niuniu牛")
  3. niuniu%E7%89%9B
  4. 然后写入请求头 xhr.setRequestHeader("Set-Cookie",str)
  5. 在服务器中通过req.headers获取整个请求头的内容
  6. 在请求头对象中有了'set-cookie': [ 'niuniu%E7%89%9B' ]
  7. 在服务端通过对象的['set-cookie]获取这个值之后转码
  8. var str = decodeURIComponent(req.headers["set-cookie"]);
  9. 服务端不能直接修改设置Set-Cookie,可以通过自定义来实现;
"X-Set-Cookie": encodeURIComponent(str+"=阿牛"),
"Access-Control-Expose-Headers": ["X-Set-Cookie"]
  1. 在客户端单独获取到这个xhr.getResponseHeader("x-set-cookie")是个URL码
  2. 在转一下 console.log(decodeURIComponent(xhr.getResponseHeader("x-set-cookie")));
  3. 得到一个niuniu牛=阿牛
  4. 然后将这个手动插入:
var stry = decodeURIComponent(xhr.getResponseHeader("x-set-cookie"));
document.cookie = stry;

在这里插入图片描述

通信加密 send发送数据,会被截获

在这里插入图片描述
英文可以通过:二进制流数 ArrayBuffer来加密

var str = "ilove you";

/*客户端*/
//Uint8Array
var arr = str.split("").map(item=>item.charCodeAt(0)^255);
arr = new Uint8Array(arr)
xhr.send(arr);


/*服务器*/
data = ''
req.on("data", (_chunk) => {
    
    
	for(var i=0;i<_chunk.length;i++){
    
    
		data += String.fromCharCode(Number(_chunk[i])^255)
	}
});

汉字加密服务端

function getData(req) {
    
    
    return new Promise(function (resolve, reject) {
    
    
        data = ''
        req.on("data", (_chunk) => {
    
    
            console.log(_chunk);
            for(var i=0;i<_chunk.length;i+=2){
    
    
            //16进制四个字节,字节倒序,前置补零
                var str="0x"+ _chunk[i+1].toString(16).padStart(2,0)+_chunk[i].toString(16).padStart(2,0);
                var num=parseInt(str,16)^0xFFFF;
                data+=String.fromCharCode(num);
            }
        });
        req.on("end", () => {
    
    
            resolve(data)
        })
    })
}

汉字加密客户端Uint16Array

var str="我 爱 你"
var arr= str.split("").map(item=>item.charCodeAt(0)^0xFFFF);
arr=new Uint16Array(arr)
xhr.send(arr);

Blob 大二进制流数据
字符串
文档(HTML ,XML)
FormData

猜你喜欢

转载自blog.csdn.net/m0_46672781/article/details/126234878
今日推荐