Beego框架自定义404页面显示HTML源码,原因是什么?
解决Beego自定义404页面显示HTML源码的问题
嘿,我来帮你搞定这个问题~你遇到的404页面直接显示HTML源码的核心原因很明确:没有给响应设置正确的Content-Type头部,浏览器无法识别这是HTML内容,就直接把源码输出了。
下面给你两种解决方案:
方案一:手动设置Content-Type头部
在执行模板渲染前,给响应头添加正确的类型声明,告诉浏览器这是HTML文件:
func page_not_found(rw http.ResponseWriter, r *http.Request){ t,_:= template.ParseFiles(beego.BConfig.WebConfig.ViewsPath +"/404.html") data :=make(map[string]interface{}) data["content"] = "page not found" // 新增这行,设置Content-Type rw.Header().Set("Content-Type", "text/html; charset=utf-8") t.Execute(rw, data) }
方案二:使用Beego内置的模板渲染方法
既然用了Beego框架,更推荐用它自带的渲染工具,它会自动帮你处理Content-Type等细节,也更贴合框架的使用逻辑:
func page_not_found(rw http.ResponseWriter, r *http.Request) { // 给模板传值 beego.Data["content"] = "page not found" // 用Beego的RenderTemplate渲染页面 beego.RenderTemplate(rw, "404.html", beego.Data) }
另外可以顺便检查下beego.BConfig.WebConfig.ViewsPath的路径是否正确,确保404.html确实在指定的视图目录下——不过你能看到源码说明文件是能被读取到的,所以主要问题还是Content-Type的设置。
内容的提问来源于stack exchange,提问作者kuzicala
相关产品推荐
相关产品推荐

