针对上传文件进行处理
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