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
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

"content-length 总是 0" 通常出现在 HTTP 请求或响应中,表示请求或响应的消息体内容长度为 0 字节。

可能原因及解决方法:

客户端问题:

客户端未正确设置 Content-Length 头:确保在发送请求时,如果你知道消息体长度,需要在请求头中正确设置 Content-Length。

客户端在发送数据前计算了 Content-Length,但实际发送的数据长度与计算的不匹配。

服务器问题:

服务器代码有误,如在处理请求体前就已经向客户端发送了响应。

服务器在读取请求体时出现了问题,如流的读取方式不正确,导致没有正确读取到数据。

解决方法:

对于客户端,检查代码确保在发送请求前计算并设置了正确的 Content-Length。

对于服务器端,检查代码确保在发送响应头之前没有向输出流中写入任何数据,并且正确读取了请求体中的数据。

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS Profiler TIme 一直initializing
339浏览 • 1回复 待解决
http 请求一直报 2300058
1679浏览 • 0回复 待解决
地图定位不准,是什么原因啊?
329浏览 • 1回复 待解决
ForEach无法遍历全部数据,是什么原因
1989浏览 • 1回复 待解决
info 获取失败 一直为空
1898浏览 • 1回复 待解决