浏览器扩展 webRequest.StreamFilter.ondata 数据分块无法解析 问题
最近在写火狐浏览器扩展的时候,在拦截请求数据后,要将数据从json转成对象,当数据过大的时候会发现,数据只有一半的数据,这时候转json就会报错。
解决办法
function logURL (requestDetails) {
let { url = '' } = requestDetails
let filter = browser.webRequest.filterResponseData(requestDetails.requestId)
let decoder = new TextDecoder('utf-8')
let encoder = new TextEncoder()
let data = []
filter.ondata = event => {
data.push(event.data)
}
filter.onstop = event => {
let str = ''
for (let buffer of data) {
str += decoder.decode(buffer, { stream: true })
}
str += decoder.decode()
let item = JSON.parse(str.substr(12, str.length - 13))
filter.write(encoder.encode(str))
filter.close()
}
return {}
}