使用 GO Gorilla mux 服务器应用 CSS 文件时出现 MIME 类型错误

2023-12-06

我在使用 Gorilla Mux 将 css 文件包含在 GO 网络服务器中时遇到问题。我在 Google Chrome 控制台中收到以下错误:

forum:1 Refused to apply style from 'http://localhost:8080/css/forum.css' because its MIME type ('text/plain') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

我知道很多人在使用文件服务器时都失败了"/"错了,但这对我也不起作用。我的文件结构如下:文件结构当我运行服务器时,我在cmd中执行:go run src/main.go。我也尝试在src文件夹。但这也行不通。在 HTML 文件中,我添加了 css 文件

<link rel="stylesheet" type="text/css" href="/css/forum.css" />

我的GO代码如下。我尝试用两种方式处理文件服务器,其中一种在另一种上方被注释掉。两者都行不通。除了文件服务器之外,其他一切都正常。

package main

import (
    "fmt"
    "net/http"
    "html/template"

    "github.com/gorilla/mux"
)

var templates *template.Template

func main() {
    r := mux.NewRouter()

    templates = template.Must(template.ParseGlob("src/templates/*.html"))
    cssHandler := http.FileServer(http.Dir("./static/css"))

    r.HandleFunc("/home", homeGetHandler).Methods("GET")
    r.HandleFunc("/home", homePostHandler).Methods("POST")
    r.HandleFunc("/forum", forumGetHandler).Methods("GET")
    r.HandleFunc("/forum", forumPostHandler).Methods("POST")

    http.Handle("/forum", r)
    http.Handle("/home", r)
    // http.Handle("/css/", http.StripPrefix("/src/static/css/", cssHandler))
    r.PathPrefix("/css/").Handler(http.StripPrefix("/src/static/css/", cssHandler))


    http.ListenAndServe(":8080", nil)
}

func homeGetHandler(w http.ResponseWriter, r *http.Request) {
    templates.ExecuteTemplate(w, "home.html", nil)
}

func homePostHandler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()
    comment := r.PostForm.Get("comment")
    fmt.Println(comment)
    http.Redirect(w, r,"/home", 302)
}

func forumGetHandler(w http.ResponseWriter, r *http.Request) {
    templates.ExecuteTemplate(w, "forum.html", nil)
}

func forumPostHandler(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()
    comment := r.PostForm.Get("post")
    fmt.Println(comment)
    http.Redirect(w, r,"/forum", 302)
}

[解决方案] 我找到了答案:

http.Handle("/forum", r)
http.Handle("/home", r)

应该只是:

http.Handle("/",r)

问题是您的 csshandler 返回的文件内容的 Content-Type 设置为“text/plain”。您必须将其设置为“text/css”才能让浏览器将其解释为 CSS 文件。您可以在使用类似中间件的函数返回文件内容之前设置内容类型:

func SetHeader(header,value string, handle http.Handler) func(http.ResponseWriter,*http.Request) {
   return func(w http.ResponseWriter,req *http.Request) {
       w.Header().Set(header,value)
       handle.ServeHTTP(w,req)
   }
}

r.PathPrefix("/css/").HandlerFunc(SetHeader("Content-Type","text/css",http.StripPrefix("/src/static/css/", cssHandler)))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 GO Gorilla mux 服务器应用 CSS 文件时出现 MIME 类型错误 的相关文章

  • 如何读取大型平面文件

    我有一个平面文件 其中包含 339276 行文本 大小为 62 1 MB 我试图读入所有行 根据我所拥有的某些条件解析它们 然后将它们插入数据库 我最初尝试使用 bufio Scan 循环和 bufio Text 来获取该行 但缓冲区空间不
  • 解压文件的简单方法

    有没有一种简单的方法可以用 Go 解压文件 现在我的代码是 func Unzip src dest string error r err zip OpenReader src if err nil return err defer r Cl
  • golang无法启动调试,显示未找到框架CoreFoundation

    我使用的是 Macbook pro m1 在数据迁移或更新到 monterey 后 不确定是什么原因导致的 golang 似乎无法调试或 go list 编译 我尝试重新安装 更新 golang 结果是一样的 Go版本 1 17 3 dar
  • Go 编译器有窗口化设置选项吗?

    我正在使用 Go 6g 编译 GTK 应用程序 我想知道是否有编译器 链接器选项使其成为 Windows 可执行文件而不是控制台可执行文件 MinGW 有一个 mwindows 选项来实现此目的 目前我必须使用十六进制编辑器手动更改 PE
  • container_memory_working_set_bytes 与 process_resident_memory_bytes 和total_rss 之间的关系

    我希望了解以下关系 容器内存工作集字节 vs 进程驻留内存字节 vs 总计RSS 容器内存 rss 文件映射以便更好地配备OOM可能性警报系统 这似乎违背了我的理解 这让我现在感到困惑 如果容器 pod 运行单个进程 执行用 Go 编写的编
  • pprof 和 ps 之间的内存使用差异

    我一直在尝试分析用 cobra 构建的 cli 工具的堆使用情况 这pprof工具显示如下 Flat Flat Sum Cum Cum Name Inlined 1 58GB 49 98 49 98 1 58GB 49 98 os Read
  • 测试 gRPC 服务

    我想测试用 Go 编写的 gRPC 服务 我使用的示例是 Hello World 服务器示例grpc go 仓库 https github com grpc grpc go blob master examples helloworld g
  • 如何读取 UDP 连接直至超时?

    我需要读取 UDP 流量 直到超时 我可以通过在 UDPConn 上调用 SetDeadline 并循环直到出现 I O 超时错误来做到这一点 但这看起来很黑客 基于错误条件的流量控制 下面的代码片段看起来更正确 但并没有终止 在生产中 这
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 共享 GOPATH 的良好做法是什么?

    我刚刚开始学习 Go 并阅读现有代码以了解 其他人是如何做的 在这样做时 go 工作空间 的使用 特别是当它与项目的依赖项相关时 似乎无处不在 在处理各种 Go 项目时 使用单个或多个 Go 工作区 即 GOPATH 的定义 的常见最佳实践
  • pq:函数unnest(未知)不是唯一的

    以下代码工作正常 但我想将 array a b c d e 定义为变量 rows err db Query select colname from SELECT date unnest array a b c d e AS colname
  • 多个生产者,单个消费者:所有 goroutine 都在睡觉 - 死锁

    在继续工作之前 我一直遵循检查通道中是否有任何内容的模式 func consume msg lt chan message for if m ok lt msg ok fmt Println More messages m else bre
  • 如何在GO中执行HEAD请求?

    我想使用 GO net http 获取页面的内容长度 我可以在终端中使用curl i X HEAD https golang org然后检查内容长度字段 use http Head https golang org pkg net http
  • 在 golang 中将 []uint32 转换为 []byte,反之亦然

    最有效的 性能 转换方式是什么 uint32向和从 byte在戈兰 例如 func main source uint32 1 2 3 dest make byte 4 len source source to dest check len
  • 如何使用 exec.Command 在 golang 中执行 Mysql 脚本

    您好 我正在尝试执行一个脚本以使用 Golang 将数据填充到数据库中 func executeTestScript cmd exec Command usr local mysql bin mysql h127 0 0 1 P3333 u
  • 在 Golang 中生成固定长度的随机十六进制字符串的有效方法?

    我需要生成很多固定长度的随机十六进制字符串 我找到这个解决方案golang中如何生成固定长度的随机字符串 https stackoverflow com a 31832326 710955 我正在做这样的事情 const letterByt
  • golang 中 *(*int)(nil) = 0 是什么意思?

    我注意到有一行 int nil 0在功能上throw https github com golang go blob master src runtime panic go L1113 go nosplit func throw s str
  • 在 Go 中解析多个 JSON 对象

    可以使用以下方法轻松解析如下对象encoding json包裹 something foo something else bar 我面临的问题是当服务器返回多个字典时 如下所示 something foo something else ba
  • 不支持的 Perl 语法:`(?<`

    我想解析 cmd gpg list keys 的结果以将其显示在浏览器上 cmd输出是这样的 pub rsa3072 2021 08 03 SC expires 2023 08 03 07C47E284765D5593171C18F00B1
  • 记录 http.ResponseWriter 内容

    Premise 我发现了类似的问题 但不适用于我的情况 因此请不要将其标记为重复 我在 Go 中有一个 HTTP 服务器 并且创建了一个中间件记录请求 响应时间 我也想记录响应 我用过httputil DumpRequest在一个名为的函数

随机推荐

  • JDBC 从 Access 表中选择最大值

    每当我运行以下代码时 即使该列存在于我的表中 我也会收到错误 未找到列 我正在使用access数据库 请寻求帮助 public class Trial1 public static void main String args try Cla
  • 动态改变 Objective C 中单元格的高度

    我创建了一个带有表格视图的应用程序 它在每个单元格中使用视图和标签 但是 如果我在 cell 代码中创建视图和单元格 它会返回空单元格 如果我删除 cell 条件 它会显示数据 但不采用动态高度 谁能帮帮我吗 void viewDidLoa
  • Spring 5.0.3 RequestRejectedException:请求被拒绝,因为 URL 未标准化

    不确定这是否是 Spring 5 0 3 的一个错误 或者是一个新功能来修复我的问题 升级后 我收到此错误 有趣的是 这个错误仅出现在我的本地计算机上 使用 HTTPS 协议的测试环境中的相同代码运行良好 继续 我收到此错误的原因是因为我用
  • 如何对 REST API 进行身份验证并映射到 Fabric 凭据

    如何使用用户名 密码创建一个新的用户帐户以针对composer rest server进行身份验证 我如何使用这个新创建的用户帐户针对composer rest server进行身份验证 我将如何管理该用户的会话 如何将此用户映射到网络参与
  • Eclipse 无法正确部署 Gradle 项目

    所以我有一个 gradle 项目 显然与 eclipse 完全集成有一些问题 当我使用 gradle build 命令构建整个内容并在 glassfish4 服务器上部署 EAR 文件时 一切似乎都工作得很好 但是当我尝试运行时 渐变日食
  • Laravel 获取属性数据

    我是 Laravel 新手 使用 Laravel 5 3 我正在创建一个check Laravel 模型中用于用户登录的函数 在这里我使用默认值从数据库获取所有数据 this gt all 这给我带来了一个大的多维 大批 Illuminat
  • Hibernate-无法延迟初始化角色集合:beans.Language.患者,无法初始化代理-无会话

    我使用 hibernate 创建一个 Rest api 我创建了一个方法来获取表中的所有项目 public List
  • 在 forEach 中进行异步调用

    我正在尝试迭代对象数组并使用 Node js 中的异步函数在这些对象中添加一些内容 到目前为止我的代码如下所示 var channel channels related channels channel forEach function e
  • firebase/firestore 文档查询不起作用 - javascript

    由于 firestore 是新的 我在使用它时遇到问题 我必须得到收藏 of all users并遍历它 但它不起作用 db collection users get then function querySnapshot console
  • Chrome 中 HTTP2 推送 XMLHttpRequest 缓存缺失

    我正在设置 Link 标头来预加载加载时发生的 XHR 请求 Link project icon png gt rel preload as image xhr stuff gt rel preload Chrome 57 0 预加载并使用
  • 使用选定区域的矩形框裁剪图像?

    我正在寻找一个好的教程或示例代码 它将展示如何裁剪从 iphone 相机拍摄的图像 某行的东西 但你可以用手指控制角落 任何提示都会得到极大的应用 因为我尝试了很多方法但没有得到结果 按钮操作的一些变化 IBAction cropImage
  • 循环从 2D 数组在 Javascript 中创建对象键和值

    这个问题在这里已经有答案了 我有两个数组 一个保存键 一个保存数组 每个数组都包含值 我想创建一个对象数组 其中每个对象将键和值配对 为此 我创建了一个数组 现在我尝试在将对象推入数组之前创建并填充对象 我的代码看起来与此类似 var ke
  • 动态创建组件总是删除最后一个实例

    我有一个child组件和parent成分 父组件动态渲染子组件 即按需渲染 并将记录保存在数组中 当子组件需要被删除时 它会发出事件 并因此传递其 id 以在记录中进行识别 尽管记录确实会根据 id 被删除 但最后创建的实例始终会被删除 即
  • 如何添加到 Eclipse 中的“错误日志”部分?

    我正在尝试制作一个 Eclipse 插件 让不懂英语的学生也能编写代码 因此 我想提取他 用他自己的语言 编码的错误 翻译它们并将它们放入错误日志中 供他查看和理解 如何在 错误日志 中写入 我不清楚这里的用例 但基于部分理解 您可以执行以
  • Python:返回主列表中每次出现子列表的所有索引[重复]

    这个问题在这里已经有答案了 我有一个主列表和一个子列表 我想找到在主列表中找到的每个子列表的索引 在本例中 我希望返回以下索引列表 gt gt gt main list 1 2 3 4 4 4 1 2 3 4 4 4 gt gt gt su
  • Facebook 应用程序:localhost 不再作为应用程序域

    我一直在使用 Rails 和 jQuery 为 Facebook 编写游戏 自从我开始使用 Facebook Javascript SDK 以来 使用 localhost 作为应用程序域似乎工作得很好 我能够在本地和 Heroku 上测试我
  • 使用 VAO 和 VBO 在 LWJGL 3 中渲染四边形时出现问题

    这是我第二次问这个问题 上次我得到一个没有解决这个问题的答案 那里的答案提到了我尝试修复这个问题时意外留下的一些代码 我也改变了问题本身略有不同 我改变了代码的顺序 将我认为错误较高的部分放在其中 并补充说我正在使用 macOS 这可能是它
  • 在javascript中查找表单ID

    我有一个主页 Home aspx 从菜单中选择一个链接时 我向服务器发送一个异步请求 并在 jquery 选项卡内加载响应 另一个 aspx 页面 现在我在页面内有不同的超链接 单击后我调用外部 js 文件中的方法 如何获取单击的超链接的表
  • 无法在 Access 2003 中使用 XML DOM 读取子节点的属性

    我在网上搜索了大约 8 个小时 包括 Experts Exchange 和 Stackoverflow 并发现其他人也有同样的问题 但我还没有找到该问题的解决方案 我附加了一个 XML 文件 该文件使用属性将数据存储在父节点和三个从属子节点
  • 使用 GO Gorilla mux 服务器应用 CSS 文件时出现 MIME 类型错误

    我在使用 Gorilla Mux 将 css 文件包含在 GO 网络服务器中时遇到问题 我在 Google Chrome 控制台中收到以下错误 forum 1 Refused to apply style from http localho