HarmonyOS 使用axios请求网页,并且使用onInterceptRequest进行响应,content-length一直是0,是什么原因?
用以下代码,在webview调试器能看到文件的response,content-type用的也是axios的responseHeader,content-length也有值,但是放在responseWeb中后content-length就为0了,还有Content-Type会被自动加上chatset=utf-8,是什么原因呢?主要是没办法把加载下来的html渲染在页面上
onInterceptRequest = (event: IonInterceptRequest) => {
const url = event.request.getRequestUrl()
const _headers = event.request.getRequestHeader()
console.info('getRequestHeader: ',JSON.stringify(_headers))
const responseWeb = new WebResourceResponse();
const headerValue: string | undefined = _headers.find(item => item.headerKey === 'User-Agent')?.headerValue;
axios.get(url, {
headers: {
os_platform: 'HARMONY_NEXT_OS',
'User-Agent': headerValue,
'userAgent': headerValue
}
}).then((resp: AxiosResponse) => {
const html: string = resp.data
try {
const harmonyHeaders = this.transferResponseHeaderStruct(resp.headers);
console.info('new headers', JSON.stringify(harmonyHeaders))
responseWeb.setResponseHeader(harmonyHeaders)
responseWeb.setResponseData(html)
responseWeb.setResponseEncoding('utf-8');
responseWeb.setResponseMimeType(resp.headers['content-type'].replace(/[;]?\s?charset=utf-8/, ''));
responseWeb.setResponseCode(200);
responseWeb.setReasonMessage('OK');
responseWeb.setResponseIsReady(true);
} catch(e) {
console.error('error ?', e.message)
}
})
responseWeb.setResponseIsReady(false);
return responseWeb;
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
下图是目录结构,错误一直出现什么原因?
2377浏览 • 1回复 待解决
HarmonyOS 沉浸式获取导航栏高度一直是0
281浏览 • 1回复 待解决
HarmonyOS CustomDialogController一直是undefined
71浏览 • 1回复 待解决
HarmonyOS Profiler TIme 一直是initializing
339浏览 • 1回复 待解决
HarmonyOS 报错 window load content failed是什么原因
750浏览 • 1回复 待解决
HarmonyOS 使用地图出来一直是绿色背景色没有地图
102浏览 • 1回复 待解决
JSAPI,fetch接口和httprequest接口请求回来的data.length都小于Content-Length怎么处理?
4228浏览 • 1回复 待解决
HarmonyOS 使用http请求,接口请求一直超时
46浏览 • 1回复 待解决
振弦采集模块测试传感器一直保持一个频率值不变是什么原因?
2535浏览 • 0回复 待解决
使用网络请求,接口数据返回失败,error对象里是code:200,data:'request data error' 是什么原因?
4151浏览 • 1回复 待解决
Web组件无法打开指定链接一直是空白,浏览器正常
233浏览 • 1回复 待解决
鸿蒙 Slider 拖动条的滑块默认一直是白色,可以改变颜色么?
5074浏览 • 1回复 待解决
HarmonyOS TextInput控件onKeyEvent一直无响应
34浏览 • 1回复 待解决
http 请求一直报 2300058
1679浏览 • 0回复 待解决
需要加载网页的时候添加请求头,在这个onLoadIntercept 中获取不到header,这是什么原因呢?
299浏览 • 1回复 待解决
HarmonyOS AVPlayer创建失败,5400102是什么原因?
95浏览 • 1回复 待解决
axios使用问题,如下图参数一直报错,请问这边应该怎么去写?能否给一个axios的使用demo?
166浏览 • 1回复 待解决
地图定位不准,是什么原因啊?
329浏览 • 1回复 待解决
ForEach无法遍历全部数据,是什么原因
1989浏览 • 1回复 待解决
NOVER8更新鸿蒙后,手机使用散热变差了,是什么原因
5401浏览 • 2回复 待解决
设备卡死,无法重启,是什么原因啊?
897浏览 • 1回复 待解决
Docker 容器异常退出,code 139 是什么原因?
5128浏览 • 1回复 待解决
info 获取是失败 一直为空
1898浏览 • 1回复 待解决
HarmonyOS 使用KVStore存储数据,一直报“KvDB communicator not ready!”
183浏览 • 1回复 待解决
HarmonyOS 使用axios进行网络请求,有一个请求包含图片和其他参数,怎么实现?
43浏览 • 1回复 待解决
"content-length 总是 0" 通常出现在 HTTP 请求或响应中,表示请求或响应的消息体内容长度为 0 字节。
可能原因及解决方法:
客户端问题:
客户端未正确设置 Content-Length 头:确保在发送请求时,如果你知道消息体长度,需要在请求头中正确设置 Content-Length。
客户端在发送数据前计算了 Content-Length,但实际发送的数据长度与计算的不匹配。
服务器问题:
服务器代码有误,如在处理请求体前就已经向客户端发送了响应。
服务器在读取请求体时出现了问题,如流的读取方式不正确,导致没有正确读取到数据。
解决方法:
对于客户端,检查代码确保在发送请求前计算并设置了正确的 Content-Length。
对于服务器端,检查代码确保在发送响应头之前没有向输出流中写入任何数据,并且正确读取了请求体中的数据。