返回顶部
首页 > 资讯 > 后端开发 > GO >如何防止 http.ListenAndServe 改变静态输出中的样式属性?
  • 410
分享到

如何防止 http.ListenAndServe 改变静态输出中的样式属性?

2024-04-05 00:04:12 410人浏览 薄情痞子
摘要

对于一个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

猜你喜欢
  • 如何防止 http.ListenAndServe 改变静态输出中的样式属性?
    对于一个Golang开发者来说,牢固扎实的基础是十分重要的,编程网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何防止 http.ListenAndServe 改变静态输出中的样式属性...
    99+
    2024-04-05
  • php如何输出类中的属性值
    这篇文章主要讲解了“php如何输出类中的属性值”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“php如何输出类中的属性值”吧!在PHP开发中,我们经常会使用类来组织和管理我们的代码。类是PHP...
    99+
    2023-07-05
  • matlab中如何阻止线性方程的输出
    在MATLAB中,可以使用分号(;)来阻止线性方程的输出。分号可以将MATLAB命令的输出结果抑制,使其不在命令窗口中显示。例如:`...
    99+
    2023-09-15
    matlab
  • 如何理解动态的样式语言less语法中混合属性
    这篇文章主要介绍“如何理解动态的样式语言less语法中混合属性”,在日常操作中,相信很多人在如何理解动态的样式语言less语法中混合属性问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • 如何快速记住CSS样式属性单词及输入HTML+CSS的方法
    小编给大家分享一下如何快速记住CSS样式属性单词及输入HTML+CSS的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、多...
    99+
    2024-04-02
  • css中word-spacing属性如何改变字之间的标准间隔
    这篇文章主要为大家展示了“css中word-spacing属性如何改变字之间的标准间隔”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中word-spaci...
    99+
    2024-04-02
  • 如何理解动态的样式语言less语法中变量与extend
    本篇内容介绍了“如何理解动态的样式语言less语法中变量与extend”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2024-04-02
  • css如何利用background-position属性改变图像在背景中的位置
    这篇文章主要为大家展示了“css如何利用background-position属性改变图像在背景中的位置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何...
    99+
    2024-04-02
  • 如何使用:first-line伪元素选择器改变段落中每行的第一行文字的CSS样式
    如何使用:first-line伪元素选择器改变段落中每行的第一行文字的CSS样式,需要具体代码示例CSS伪元素是CSS中常用的一种选择器,用于指定一个元素的特定部分或状态。其中,:first-line伪元素选择器用于选择元素中第一行的文字,...
    99+
    2023-11-20
    CSS样式 伪元素选择器 first-line
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作