{"version":3,"file":"sign.mjs","sources":["../../../../packages/utils/sign.js"],"sourcesContent":["import { rsaEncryptByPublicKey } from './util'\nimport { isString, isObject } from './types'\nimport { md5 } from './md5'\n\n// 解析ajax请求中的url参数或post参数\nfunction parseRequestData(data) {\n\tlet buffer = []\n\tlet idx = data.lastIndexOf('?')\n\tif (idx > -1) {\n\t\tdata = data.substring(idx + 1, data.length)\n\t}\n\n\t// 处理+号，由于+号在XMLHttpRequest里send时会变成空格，因此计算时需要替换为空格，保持与后端一致\n\tdata = data.replace(/\\+/g, ' ')\n\n\tlet arr = data.split('&')\n\tif (arr && arr.length) {\n\t\tlet item, k, v\n\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\titem = arr[i]\n\t\t\tif (item && isString(item)) {\n\t\t\t\tidx = item.indexOf('=')\n\t\t\t\tk = item\n\t\t\t\tv = ''\n\t\t\t\tif (idx > -1) {\n\t\t\t\t\tk = item.substring(0, idx)\n\t\t\t\t\tv = item.substring(idx + 1, item.length)\n\t\t\t\t}\n\t\t\t\t// 判断value中是否有%号，有则做decodeURIComponent\n\t\t\t\tif (v && v.indexOf('%') > -1) {\n\t\t\t\t\tv = decodeURIComponent(v)\n\t\t\t\t}\n\t\t\t\tbuffer.push(k + '=' + v)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn buffer\n}\n\n/**\n * axios接口参数签名\n * @param {*} config 请求配置\n */\nexport function axiosSign(config) {\n\t// 获取到秒级的时间戳,与后端对应\n\tlet time = new Date().valueOf()\n\t// 校准时间\n\tif (window.timestampDifference) {\n\t\ttime -= window.timestampDifference\n\t}\n\tlet pArray = []\n\tif (config.url && config.url.indexOf('?') > -1) {\n\t\tpArray = parseRequestData(config.url)\n\t}\n\tlet signStr = ''\n\tif (config.params) {\n\t\t// url参数签名\n\t\tfor (let p in config.params) {\n\t\t\tpArray.push(p + '=' + config.params[p])\n\t\t}\n\t} else if (config.data) {\n\t\tif (config.data instanceof FormData) {\n\t\t\tfor (let [key, value] of config.data) {\n\t\t\t\tif (!(value instanceof File)) {\n\t\t\t\t\tpArray.push(key + '=' + value)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// request body参数的内容\n\t\t\tpArray.push(JSON.stringify(config.data))\n\t\t}\n\t}\n\tpArray.sort() // 排序\n\tsignStr = pArray.join('&')\n\t// console.debug('axiosSign origin sign str', signStr)\n\tsignStr = encodeURIComponent(signStr)\n\t// console.debug('axiosSign encode sign str', signStr)\n\tlet hash = md5(signStr)\n\tlet headers = config.headers || {}\n\tlet signature = hash + '|' + time\n\tlet rsaSignature = rsaEncryptByPublicKey(signature)\n\theaders.Signature = rsaSignature\n\theaders['X-Requested-Sign'] = rsaSignature\n\t// console.debug('axiosSign:' + signature)\n\tconfig = Object.assign(config, { headers: headers })\n\treturn config\n}\n\n/**\n * filetransfer 参数签名\n * @param settings\n * @param file\n */\nexport function transferSign(settings) {\n\tlet time = new Date().valueOf()\n\t// 校准时间\n\tif (window.timestampDifference) {\n\t\ttime -= window.timestampDifference\n\t}\n\tlet pArray = []\n\tif (settings && settings.url && settings.url.indexOf('?') > -1) {\n\t\tpArray = parseRequestData(settings.url)\n\t}\n\n\tlet signStr = ''\n\tif (settings.data) {\n\t\t// url参数签名\n\t\tfor (let p in settings.data) {\n\t\t\tpArray.push(p + '=' + settings.data[p])\n\t\t}\n\t}\n\tpArray.sort() // 排序\n\tsignStr = pArray.join('&')\n\tsignStr = encodeURIComponent(signStr)\n\tlet hash = md5(signStr)\n\tlet headers = settings.headers || {}\n\tlet signature = hash + '|' + time\n\tlet rsaSignature = rsaEncryptByPublicKey(signature)\n\theaders.Signature = rsaSignature\n\theaders['X-Requested-Sign'] = rsaSignature\n\tsettings = Object.assign(settings, { headers: headers })\n\treturn settings\n}\n\n/**\n * ajax 请求签名\n * @param url\n * @param data\n * @returns {*}\n */\nexport function ajaxSign(url, data, xhr, useFormdata) {\n\tlet time = new Date().valueOf()\n\t// 校准时间\n\tif (window.timestampDifference) {\n\t\ttime -= window.timestampDifference\n\t}\n\n\tlet pArray = []\n\tif (url && url.indexOf('?') > -1) {\n\t\tpArray = parseRequestData(url)\n\t}\n\n\tlet signStr = ''\n\tif (data) {\n\t\tif (isString(data)) {\n\t\t\tpArray = pArray.concat(parseRequestData(data))\n\t\t} else if (isObject(data)) {\n\t\t\tif (useFormdata === true) {\n\t\t\t\t// 使用表单数据模式\n\t\t\t\tif (data instanceof FormData) {\n\t\t\t\t\tfor (let [key, value] of data) {\n\t\t\t\t\t\tif (!(value instanceof File)) {\n\t\t\t\t\t\t\tpArray.push(key + '=' + value)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (let p in data) {\n\t\t\t\t\t\tpArray.push(p + '=' + data[p])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// 使用整个requestBody模式\n\t\t\t\tpArray.push(JSON.stringify(data))\n\t\t\t}\n\t\t}\n\t}\n\tpArray.sort() // 排序\n\tsignStr = pArray.join('&')\n\t// console.debug('ajaxSign useFormdata:' + useFormdata)\n\t// console.debug('ajaxSign origin sign str', signStr)\n\tsignStr = encodeURIComponent(signStr)\n\t// console.debug('ajaxSign encode sign str', signStr)\n\tlet hash = md5(signStr)\n\tlet signature = hash + '|' + time\n\t// console.debug('ajaxSign:' + signature)\n\tsignature = rsaEncryptByPublicKey(signature)\n\tif (xhr && xhr instanceof XMLHttpRequest) {\n\t\txhr.setRequestHeader('Signature', signature)\n\t\txhr.setRequestHeader('X-Requested-Sign', signature)\n\t}\n\treturn signature\n}\n"],"names":[],"mappings":"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"}