Beego生产环境返回状态码的bug

项目用的是Beego的1.4.2。但是最近发现cdn会把项目中的40x或者50x的页面缓存住。

研究了下Beego的源码,然后经过测试后发现,在生产环境下,当请求的页面出错时,返回的页面的状态码40x或者50x会被统一改为200。

这个是因为开发者谢大将写入response的状态码的那行给注释了。

要是用Beego的同僚注意了,这个地方得自己处理下。

如下处理即可:

在main.go中:

package main

import (
	"github.com/astaxie/beego"
	"zhe800h5wap/controllers"
	_ "zhe800h5wap/routers"
)

func main() {
	beego.Errorhandler("400", controllers.PageNotFound)
	beego.Errorhandler("401", controllers.PageNotFound)
	beego.Errorhandler("403", controllers.PageNotFound)
	beego.Errorhandler("404", controllers.PageNotFound)
	beego.Errorhandler("405", controllers.PageNotFound)
	beego.Errorhandler("500", controllers.ServerError)
	beego.Errorhandler("502", controllers.ServerError)
	beego.Errorhandler("503", controllers.ServerError)
	beego.Errorhandler("504", controllers.ServerError)
	beego.Run()
}

其中,beego.Errorhandler("400", controllers.PageNotFound) 会处理页面状态码是400的,其他的依次类推。

在controllers包中:

在init.go中新增:

func PageNotFound(rw http.ResponseWriter, r *http.Request) {
	rw.WriteHeader(http.StatusNotFound)
}

func ServerError(rw http.ResponseWriter, r *http.Request) {
	rw.WriteHeader(http.StatusInternalServerError)
}

其中,对应的controllers的方法会将40x和50x的状态码统一处理为404和500。

这样处理后,cdn就不会缓存这些状态码不是200的页面了。

fang,2015-02-12

时间: 2024-12-27 00:34:08

Beego生产环境返回状态码的bug的相关文章

服务器返回状态码解析

服务器返回的各种状态码到底表示什么意思呢,哪些说明没有问题,哪些返回状态是出问题了,这个返回状态码表示的是什么意思,下面是服务器各种返回状态码的意义: 100(继续)请求者应当继续提出请求.服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分. 101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备进行切换. 200(成功)  服务器已成功处理了请求.通常,这表示服务器提供了请求的网页.如果您的robots.txt文件显示为此状态,那么,这表示Googlebo

HTTP返回状态码和错误

HTTP 返回状态码一.1xx - 信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应. ? 100 - 继续. ? 101 - 切换协议. 二.2xx - 成功 这类状态代码表明服务器成功地接受了客户端请求. ? 200 - 确定.客户端请求已成功. ? 201 - 已创建. ? 202 - 已接受. ? 203 - 非权威性信息. ? 204 - 无内容. ? 205 - 重置内容. ? 206 - 部分内容. 三.3xx - 重定向 客户端浏

zabbix自动发现 url 以及对http返回状态码监控实现 告警

2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com/small-wei/p/10911769.html 2.编写监控脚本 cd  /usr/lib/zabbix/externalscripts #本人存放脚本路径,存放路径可以自定义,这个定义文件在zabbix_server.conf中,及zabbix-server服务配置文件. vim  web_

接口请求返回状态码总结

接口请求返回状态码总结 前端在调用接口时都要关注接口返回给我们的状态码,之前只是大概的了解比如404是前端的错,可能是路径错误等,300+可能是重定向了,500以上是服务端或者服务器的错误,并没有一个很好的总结.今天中午看群里有人问这问题,就搜集对比整理了一下,如下: 1xx - 信息提示 这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应.· 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分.· 101 - Switchin

newngapi接口api返回状态码

ng接口api返回状态码 提醒一点这里ng官方api接口 www.neapi.com有一点没有说明的除了返回的01是正常的其余的返回状态码都是错误的 code * 状态码 字段名称 类型 00 失败 01 成功 02 参数不能为空 03 sign_key异常 10001 code不能为空 10002 code错误 10003 密钥错误 10004 您所提交的用户名已被使用 10007 必填字段不能为空 10008 用户不存在 10009 sign_key错误 10010 注册失败或者用户已注册

http web返回状态码

Java发送Http请求并获取状态码 转发自:http://www.cnblogs.com/renhui/p/6197526.html 毛毛 通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page/qizha/pros_add.jsp"); try { HttpURLConnection uConnection = (HttpURLConnection

手动修改PHP页面返回状态码

<?php //比如当前页面要返回404状态码 header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found");

http返回状态码及含义

不知道大家上网是是否碰到过打开网页后报303,403等错误,让侯IE会给出一大堆的提示告诉你如何处理这些事,但是最后还是不能打开网页,有的人都认为是自己网络问题,其实不然,有时候网页的服务器负载也会出现这类的现象,所以大家就要好好了解下,到底代码所代表的意思了,HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.它由 RFC 2616 规范定义的,并得到RFC 2518.RFC 2817.RFC 2295.RFC 2774.RFC 4918等规范

HTTP知识普及系列:HTTP返回状态码

状态码 1XX 信息性状态码 接受的请求正在处理 2XX 成功状态码 请求正常处理完毕 3XX 重定向状态码 需要进行附加操作以完成请求 4XX 客户端错误状态码 服务器无法处理请求 5XX 服务器端错误状态码 服务器处理请求出错 2XX 相应结果表明请求被正常处理了 200 OK 表示从客户端发来的请求在服务器端被正常处理了: 204 No Content 该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分.也不允许返回任何实体的主体. 206 Partial Co