我正在为我的嵌入式项目实现最低 HTTPS 层,其中我使用mbedTLS 进行 TLS并硬编码 HTTP 标头以与 HTTPS 服务器通信。
它适用于普通网站。但到目前为止,我的实现通过检查读取的最后一个字节是否为\n
.
if( ret > 0 && output[len-1] == '\n' )
{
ret = 0;
output[len] = 0;
break;
}
然而,由于显而易见的原因,这并不总是有效。我试过openssl s_client
了,它的行为是一样的——如果 HTTP 响应以 终止\n
,然后s_client
在获取所有数据后立即返回。否则它将永远阻塞,等待更多数据。
一个真正的浏览器似乎能够正确处理这个问题。除了设置超时,我还能做些什么吗?