基于libmicrohttpd的C++ HTTP服务器在Emacs EWW中无法渲染HTML
解决Emacs EWW直接访问libmicrohttpd服务器显示原始HTML的问题
问题出在你的libmicrohttpd服务器返回HTTP响应时,没有正确设置Content-Type响应头。
Chrome会自动尝试识别内容类型,哪怕缺少Content-Type头也能正常渲染HTML;但Emacs EWW对HTTP响应头的要求更严格——如果服务器没明确返回text/html; charset=utf-8的Content-Type,EWW会把返回内容当成纯文本直接展示,不会解析渲染成HTML页面。而用eww-open-file打开本地文件时,EWW是根据文件内容或后缀直接识别为HTML,所以能正常渲染。
解决方案
在你的C++服务器代码里,发送HTML响应前,添加Content-Type响应头:
// 假设已创建MHD_Response对象response MHD_add_response_header(response, "Content-Type", "text/html; charset=utf-8");
确保这个头在调用MHD_queue_response之前添加,这样EWW收到响应时,就能识别出这是HTML内容并正确渲染。
内容的提问来源于stack exchange,提问作者yuandaxing
相关产品推荐
相关产品推荐

