1.1.1 • Published 5 years ago
eft-encrypt v1.1.1
示例
<!doctype html>
<html>
<head>
<style>
</style>
</head>
<script src="./eft-crypto.js"></script>
<body>
<button id="button" onclick="send()">发送请求</button>
</body>
<script>
function send() {
console.log(EFT.getSignature('E2028'));
var xmlHttp;
if (XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else {
xmlHttp = new ActiveXObject();
}
var body = { key: 1 };
const PUBLIC_LEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvtPrDbm/rl0FrfXmrNZWk/b6Pj+DjnaqlOfSYaU+em4C7DiodfpFxckchhv+WUp0QXnkdKnVGZElziCt8GNBCCUaYatrtpierzUX+VkTUe8LEQpQAGtA7fVt8mgrsewxvScieGNUBo4UV9WOfmwiiSK5NcKePLkq+r4efLcmUfZannyA0f4hj/mgG3Y6dxO+CFBe1BX/wQn9Opa3efAgD5CaO1sqrbh/5KCBRSCBCaw7k3pFG3czmEWkE/shTht5jDH2EGH3vUhdA8SjNyNdwrVO2kp2C+V20ox7T3FXKeAm65o3yk07I43TGInkoznylP/XZl6nBXI8P9f4qFfeGwIDAQAB';
encryptData = EFT.aesEncrypt(16, body);
const encryptKey = EFT.rsaEncrypt(PUBLIC_LEY, encryptData.key);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
if ((xmlHttp.status >= 200 && xmlHttp.status <= 300) || xmlHttp.status == 304) {
let body = JSON.parse(xmlHttp.response);
console.log(EFT.aesDecrypt(encryptData.key, body._resp_body));
}
}
}
xmlHttp.open('POST', 'http://localhost:3000/crypto', true);
xmlHttp.setRequestHeader("content-type", 'application/x-www-form-urlencoded');
xmlHttp.setRequestHeader("req-key", encryptKey);
xmlHttp.send('requestBody=' + encryptData.encryptData);
}
</script>
</html>
const koa = require('koa');
const app = new koa();
const Router = require('koa-router');
const router = new Router();
var bodyParser = require('koa-bodyparser');
app.use(bodyParser());
app.use((ctx, next) => {
if (ctx.method === 'OPTIONS') {
ctx.body = '';
}
next();
});
app.use((ctx, next) => {
let origin = ctx.headers.origin;
// if (whiteList.includes(origin)) {//如果判断是否存在,不建议使用indexOf
ctx.set('Access-Control-Allow-Origin', '*');
ctx.set('Access-Control-Allow-Headers', "req-key,req-uuid,encryption");
ctx.set('Access-Control-Allow-Methods', "PUT");
ctx.set('Access-Control-Allow-Credentials', true);
ctx.set('Access-Control-Max-Age', 60);
//新增的部分
ctx.set('Access-Control-Expose-Headers', 'response');
//
// }
next();
})
router.post('/crypto', async (ctx, next) => {
ctx.body = {
_req_id: ctx.request.headers['req-uuid'],
_resp_body: ctx.request.body.requestBody
};
})
app.use(router.routes());
app.listen(3000);
console.log('koa server is listening port 3000');