针对上传文件进行处理
This commit is contained in:
		| @@ -1,11 +1,13 @@ | ||||
| /** | ||||
|  利用chrome的fetch来避免跨域 | ||||
|  **/ | ||||
|  | ||||
| import {getImageMd5} from "@/utils/image"; | ||||
|  | ||||
| chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|   if (request.type == 'api') { | ||||
|     let headers = {}, data; | ||||
|     new Promise((resolve) => { | ||||
|       let headers = {}; | ||||
|       let data = null; | ||||
|       if (request.needMallId) { | ||||
|         headers.Mallid = request.mallId; | ||||
|       } | ||||
| @@ -25,29 +27,20 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|               formData.append(key + `[${i}]`, subValue) | ||||
|             }) | ||||
|           } else { | ||||
|             if (key == 'image') { | ||||
|               let blob = new Blob([request.data[key]], {type: 'application/png'}) | ||||
|               // formData.append(key,  new Blob([request.data[key]], {type: 'application/png'})) | ||||
|               formData.append(key,  blob) | ||||
|             } else { | ||||
|               formData.append(key, request.data[key]) | ||||
|             } | ||||
|             if (key == "image") { | ||||
|               //跳过image的处理 | ||||
|             } else formData.append(key, request.data[key]) | ||||
|           } | ||||
|         }) | ||||
|         data = formData | ||||
|       } | ||||
|       headers.cookie = getCookie(); | ||||
|       Promise.resolve().then(() => fetch(request.url, { | ||||
|         'headers': headers, | ||||
|         'method': 'POST', | ||||
|         'referrerPolicy': 'no-referrer', | ||||
|         'credentials': 'include', | ||||
|         'body': data, | ||||
|         'mode': 'cors' | ||||
|       })).then((res) => { | ||||
|         resolve(res.json()); | ||||
|       }); | ||||
|     }).then(sendResponse); | ||||
|       if (request.isFormData && !!request.data.image) {//针对图片上传特殊的处理办法 | ||||
|         getImageMd5(request.data.image).then(res => data.append('image', res.image.blobData)).then(resolve) | ||||
|       } else resolve() | ||||
|     }).then(() => fetch(request.url, { | ||||
|       headers, 'method': 'POST', 'referrerPolicy': 'no-referrer', 'credentials': 'include', 'body': data, 'mode': 'cors' | ||||
|     })).then(res => res.json()).then(sendResponse); | ||||
|   } else if (request.type == 'temuApi') { | ||||
|     new Promise((resolve) => { | ||||
|       let headers = {}; | ||||
| @@ -57,12 +50,7 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|       headers['Content-Type'] = 'application/json'; | ||||
|       headers.cookie = getTemuCookie(); | ||||
|       Promise.resolve().then(() => fetch(request.url, { | ||||
|         'headers': headers, | ||||
|         'method': 'POST', | ||||
|         'referrerPolicy': 'no-referrer', | ||||
|         'credentials': 'include', | ||||
|         'body': JSON.stringify(request.data), | ||||
|         'mode': 'cors' | ||||
|         'headers': headers, 'method': 'POST', 'referrerPolicy': 'no-referrer', 'credentials': 'include', 'body': JSON.stringify(request.data), 'mode': 'cors' | ||||
|       })).then((res) => { | ||||
|         resolve(res.json()); | ||||
|       }).catch(() => { | ||||
| @@ -75,10 +63,7 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|       headers['Content-Type'] = 'text/html'; | ||||
|       //headers.cookie = getTemuCookie(); | ||||
|       Promise.resolve().then(() => fetch(request.url, { | ||||
|         'headers': headers, | ||||
|         'method': 'GET', | ||||
|         'referrerPolicy': 'no-referrer', | ||||
|         //'credentials': 'include', | ||||
|         'headers': headers, 'method': 'GET', 'referrerPolicy': 'no-referrer', //'credentials': 'include', | ||||
|         'mode': 'cors' | ||||
|       })).then((res) => { | ||||
|         // 创建了一个数据读取器 | ||||
| @@ -87,7 +72,7 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|         const decoder = new TextDecoder(); | ||||
|  | ||||
|         let text = "" | ||||
|         reader.read().then(function processText({ done, value }) { | ||||
|         reader.read().then(function processText({done, value}) { | ||||
|           // Result 对象包含了两个属性: | ||||
|           // done  - 当 stream 传完所有数据时则变成 true | ||||
|           // value - 数据片段。当 done 为 true 时始终为 undefined | ||||
| @@ -108,11 +93,7 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|       headers['Content-Type'] = 'text/html'; | ||||
|       headers.cookie = getAliexpressCookie(); | ||||
|       Promise.resolve().then(() => fetch(request.url, { | ||||
|         'headers': headers, | ||||
|         'method': 'GET', | ||||
|         'referrerPolicy': 'no-referrer', | ||||
|         'credentials': 'include', | ||||
|         'mode': 'cors' | ||||
|         'headers': headers, 'method': 'GET', 'referrerPolicy': 'no-referrer', 'credentials': 'include', 'mode': 'cors' | ||||
|       })).then((res) => { | ||||
|         // 创建了一个数据读取器 | ||||
|         const reader = res.body.getReader(); | ||||
| @@ -120,7 +101,7 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|         const decoder = new TextDecoder(); | ||||
|  | ||||
|         let text = "" | ||||
|         reader.read().then(function processText({ done, value }) { | ||||
|         reader.read().then(function processText({done, value}) { | ||||
|           // Result 对象包含了两个属性: | ||||
|           // done  - 当 stream 传完所有数据时则变成 true | ||||
|           // value - 数据片段。当 done 为 true 时始终为 undefined | ||||
| @@ -141,27 +122,17 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { | ||||
|       headers['Content-Type'] = 'application/json'; | ||||
|       headers.cookie = getSheinCookie() | ||||
|       request.params = formatParams(request.params) | ||||
| 		  let _url = request.url + (request.params ? ('?' + request.params) : '') | ||||
|       let _url = request.url + (request.params ? ('?' + request.params) : '') | ||||
|       Promise.resolve().then(() => fetch(_url, { | ||||
|         'headers': headers, | ||||
|         'method': request.method, | ||||
|         'referrerPolicy': 'no-referrer', | ||||
|         'credentials': 'include', | ||||
|         'body': JSON.stringify(request.data), | ||||
|         'mode': 'cors' | ||||
|         'headers': headers, 'method': request.method, 'referrerPolicy': 'no-referrer', 'credentials': 'include', 'body': JSON.stringify(request.data), 'mode': 'cors' | ||||
|       })).then((res) => { | ||||
|         resolve(res.json()); | ||||
|       }); | ||||
|     }).then(sendResponse); | ||||
|   } else if (request.type == 'notify') { | ||||
|     chrome.notifications.create( | ||||
|         "" + Math.random(), { | ||||
|           type: "basic", | ||||
|           title: "TEMU助手", | ||||
|           message: "您店铺【" + request.mallName + "】的商品【" + request.productName + "】成功加入发货台,请尽快处理", | ||||
|           iconUrl: "./icons/48.png" | ||||
|         }, null | ||||
|     ) | ||||
|     chrome.notifications.create("" + Math.random(), { | ||||
|       type: "basic", title: "TEMU助手", message: "您店铺【" + request.mallName + "】的商品【" + request.productName + "】成功加入发货台,请尽快处理", iconUrl: "./icons/48.png" | ||||
|     }, null) | ||||
|   } | ||||
|  | ||||
|   return true; | ||||
| @@ -176,31 +147,28 @@ chrome.action.onClicked.addListener(function () { | ||||
| }); | ||||
|  | ||||
| chrome.webRequest.onSendHeaders.addListener(details => { | ||||
|   if (details.url && (details.url.indexOf('joinDeliveryGoodsOrderPlatform')  != -1)) { | ||||
|   if (details.url && (details.url.indexOf('joinDeliveryGoodsOrderPlatform') != -1)) { | ||||
|     details.requestHeaders.push({ | ||||
|       name: 'Referer', | ||||
|       value: 'https://kuajing.pinduoduo.com/main/order-manage' | ||||
|       name: 'Referer', value: 'https://kuajing.pinduoduo.com/main/order-manage' | ||||
|     }) | ||||
|     for (let i = 0 ; i < details.requestHeaders.length; i++) { | ||||
|     for (let i = 0; i < details.requestHeaders.length; i++) { | ||||
|       if (details.requestHeaders[i].name == 'Origin') { | ||||
|         details.requestHeaders[i].value = 'https://kuajing.pinduoduo.com' | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|   } else if (details.url && (details.url.indexOf('mms/userInfo')  != -1)) { | ||||
|   } else if (details.url && (details.url.indexOf('mms/userInfo') != -1)) { | ||||
|     details.requestHeaders.push({ | ||||
|       name: 'Referer', | ||||
|       value: 'https://kuajing.pinduoduo.com/main/order-manage' | ||||
|       name: 'Referer', value: 'https://kuajing.pinduoduo.com/main/order-manage' | ||||
|     }) | ||||
|     for (let i = 0 ; i < details.requestHeaders.length; i++) { | ||||
|     for (let i = 0; i < details.requestHeaders.length; i++) { | ||||
|       if (details.requestHeaders[i].name == 'Origin') { | ||||
|         details.requestHeaders[i].value = 'https://kuajing.pinduoduo.com' | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| }, | ||||
| {urls: ["<all_urls>"]},["requestHeaders", "extraHeaders"]); | ||||
| }, {urls: ["<all_urls>"]}, ["requestHeaders", "extraHeaders"]); | ||||
|  | ||||
|  | ||||
| function getCookie() { | ||||
| @@ -254,4 +222,4 @@ function formatParams(data) { | ||||
|     arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name])) | ||||
|   } | ||||
|   return arr.join("&") | ||||
| } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user