对于一个golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何防止 Http.ListenAndServe 改变静态输出中的样式属性
对于一个golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何防止 Http.ListenAndServe 改变静态输出中的样式属性?》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
问题内容在一个非常基本的手写网页(没有 js、样式表等)中,我有一些静态 html,其部分如下所示。
<li style="font-size:200%; margin-bottom:3vh;">
<a href="http://192.168.1.122:8000">
reload hmi
</a>
</li>
我正在使用 Go 的 http.listenandserve 来提供页面服务。结果如下:
<li style="font-size:200%!;(missing) margin-bottom:3vh;">
<a href="http://192.168.1.122:8000">
reload hmi
</a>
</li>
注意更改后的样式属性。
服务器实现也很初级。它作为 goroutine 启动:
// systemControlService provides pages on localhost:8003 that
// allow reboots, shutdowns and restoring configurations.
func systemControlService() {
info("Launching system control service")
http.HandleFunc("/", controlPage)
log.Fatal(http.ListenAndServe(":8003", nil))
}
// loadPage serves the page named by title
func loadPage(title string) ([]byte, error) {
filename := "__html__/" + title + ".html"
info(filename + " requested")
content, err := ioutil.ReadFile(filename)
if err != nil {
info(fmt.Sprintf("error reading file: %v", err))
return nil, err
}
info(string(content))
return content, nil
}
// controlPage serves controlpage.html
func controlPage(w http.ResponseWriter, r *http.Request) {
p, _ := loadPage("controlpage")
fmt.Fprintf(w, string(p))
}
在上面的 func loadpage()
中,info
是一个日志记录调用。为了进行调试,我在返回 controlpage.html
的内容之前调用它。日志条目显示此时它尚未损坏,因此问题几乎必须出在 listenandserve 中。
我在 go 文档中没有找到任何似乎适用的 http
内容。我不知道这里发生了什么事。任何帮助表示赞赏。
你能试试这个吗,注意fprint而不是fprintf
func controlpage(w http.responsewriter, r *http.request) {
p, _ := loadpage("controlpage")
fmt.fprint(w, string(p))
}
您的代码存在几个问题(包括当您可以使用 http.fileserver
提供静态内容时它根本存在的事实,以及您在发送之前将整个响应读入 []byte
的事实返回而不是流式传输)但主要是这样的:
fmt.Fprintf(w, string(p))
fprintf
的第一个参数是一个格式字符串。它的作用是替换格式字符串中以 %
开头的内容。要将 []byte
写入写入器,您不需要 fmt 包,因为您不想格式化任何内容。 w.Write()就够了。 fmt.fprint
也可用,但完全没有必要;它会做一些无意义的额外工作,然后调用 w.write
。
理论要掌握,实操不能落!以上关于《如何防止 http.ListenAndServe 改变静态输出中的样式属性?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!
--结束END--
本文标题: 如何防止 http.ListenAndServe 改变静态输出中的样式属性?
本文链接: https://lsjlt.com/news/596358.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0