go - 如何在 golang 中记录 MaxHeaderBytes header 问题

标签 go

关闭。这个问题需要debugging details .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

1年前关闭。




Improve this question




我用这段代码在golang中运行了http服务器

// Setup HTTP server.
var server = &http.Server{
    Addr:           ":" + viper.GetString("SERVER_PORT"),
    Handler:        routes.Routers(),
    MaxHeaderBytes: 1, // 1 byte
}

在这里,我将 MaxHeaderBytes 设置为 1 个字节,它工作正常,如果我传递了太多标题但无法记录此错误,我会收到 413 错误代码,甚至中间件也无法用于记录

enter image description here

最佳答案

我很难理解这个问题。您是否想以某种方式记录客户端的请求由于其 header 大于配置的限制而被拒绝的事实?

如果是,请查看 ErrorLogConnState net/http.Server 的回调类型。

我不太明白你的意思

Even middleware is not working for logging



但是,如果您的意思是没有调用您安装的任何 HTTP 请求处理程序(在您的示例中由 routes.Routers() 返回的对象),这可以很容易地解释:只有在从观点net/http机械。
因此,如果您明确告诉服务器拒绝不符合某些条件的请求,则此类请求将永远不会被视为正确并到达用户定义的处理程序,因此您的“中间件”没有机会对其采取行动。

关于go - 如何在 golang 中记录 MaxHeaderBytes header 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62371546/

相关文章:

json - 如何严格解码固定长度数组?

go - golang中如何打印字符串底层数组的地址

go - golang报错函数如何获取编译信息

go - 如何导入和使用.so文件

http - 使用 rs.cors 时返回 http 状态码

GO-Github API : How To Commit and Push to a remote branch

go - [0] 和 [ :1] in Go? 有什么区别

go - 将 go 例程的多个结果聚合到一个数组中

go - 为什么是 log.Println ("does not log into file")?

xml - 转到XML编码(marshal): Unintended Output of Slice