SWI-Prolog如何移除reply_html_page自动插入的meta标签及添加Content-Length头
移除自动插入的content-type meta标签
SWI-Prolog的reply_html_page默认插入该meta标签是为了声明页面编码,你只需要在头部配置项中加入encoding(false)即可关闭这个自动行为,修改后的调用代码如下:
reply_html_page( [title('Fortunes'), encoding(false)], [table([ ... ])] ).
响应携带Content-Length头
SWI-Prolog的HTTP服务默认使用分块传输(chunked),因此默认不会返回Content-Length头。你可以通过以下两种方案实现:
- 方案1:禁用分块传输,服务端会自动计算内容长度并添加对应响应头。使用
reply_html_page/4重载版本,第一个参数传入响应配置chunked(false)即可:reply_html_page( [chunked(false)], [title('Fortunes'), encoding(false)], [table([ ... ])] ). - 方案2:手动序列化HTML内容计算长度,适合需要自定义控制的场景:
% 先生成HTML内容字节列表 phrase(reply_html_page([title('Fortunes'), encoding(false)], [table(...)]), Bytes), length(Bytes, Len), % 手动输出响应头 format('Content-Type: text/html~n'), format('Content-Length: ~d~n~n', [Len]), % 输出内容 format('~s', [Bytes]).
内容的提问来源于stack exchange,提问作者vasily
相关产品推荐
相关产品推荐

