Go语言技术文章
-
Go 上传接口要限制请求体,应该在 Handler 入口用 http.MaxBytesReader 包住 r.Body,再用 errors.As 识别 *http.MaxBytesError 并返回 413。本文还区分 Content-Length 预检查与 multipart 的 maxMemory。134 收藏 -
Go 客户端只在生产环境出现 x509 证书错误时,从系统根证书、容器 CA 包、证书链和 ServerName 四层排查,并用安全配置完成修复。112 收藏 -
Go http.Server 的优雅关闭超时不是 Server 的固定字段,而是传给 Shutdown 的 context 截止时间。本文用信号、5 秒预算和错误处理示例说明配置方式,以及 WebSocket 等劫持连接的边界。433 收藏 -
Golang · Go问答 | 1天前 | Go问答 · 连接复用 · HTTP超时 · Context取消 · 服务端取消 · Go context Transport http.Client WithTimeout WithContext
Go 请求设置 Context 超时后,客户端会先结束这次请求的等待,但连接池状态和服务端任务不一定同时消失。本文区分请求取消、Transport 连接复用、响应体关闭以及服务端 Context 传播,给出可执行的排查和处理方式。180 收藏 -
讲清 Go 1.22+ http.ServeMux 的父子树路由、方法匹配、具体性优先、通配符、405 与尾斜杠边界。270 收藏 -
Golang · Go问答 | 1天前 | HTTP · go · 接口排查 · cookiejar · Cookie会话 · Go Cookiejar expires MaxAge http.CookieJar 过期Cookie
Go 的 http.CookieJar 没有一个叫 Clear 的公开方法。要清理过期 Cookie,通常让 jar 按 Expires 和 MaxAge 过滤,登出时再发送匹配域名与路径的删除 Cookie;如果问题仍然存在,就从目标 URL、Domain 和 Path 三个维度核对。181 收藏 -
用 Go encoding/xml 的结构体标签把重复 XML 子节点映射到切片,并处理嵌套路径、缺失节点与重复解码残留。279 收藏 -
Golang · Go问答 | 1天前 | 重定向 · 排查 · Cookie · net/http · Go问答 · 重定向 Go Cookiejar http.Client CheckRedirect http.Cookie
Go http.Client 跟随重定向时,会在每个目标 URL 上重新咨询 CookieJar。Cookie 是否发送取决于目标域、Path、Secure 和有效期;Domain 未设置时是 host-only Cookie。本文用最小探针解释 CheckRedirect、CookieJar 与跨子域重定向的边界。464 收藏 -
讲清 Go csv.Writer 如何用 UseCRLF 固定 LF 或 CRLF 行尾,并在 Flush 后通过 Error 确认最后一批 CSV 数据已经交给底层 writer。145 收藏 -
Golang · Go问答 | 1天前 | 代理 · 环境变量 · 故障排查 · HTTP客户端 · Go问答 · Go http.Transport http.Client ProxyFromEnvironment HTTP_PROXY HTTPS_PROXY NO_PROXY
Go HTTP 客户端代理环境变量不生效,通常不是变量名写错,而是请求没有走 DefaultTransport、自定义 Transport 覆盖了 Proxy,或进程首次解析代理后才修改环境变量。本文给出直接探测、修复和复查方法。282 收藏 -
Go 的 encoding/csv 可以把引号字段里的换行当作字段内容,而不是新记录。本文用 Reader.Read、FieldsPerRecord 和 ParseError 处理多行字段,并区分 EOF、字段数不一致与引号语法错误。203 收藏 -
Golang · Go问答 | 1天前 | go语言 · 接口设计 · Go问答 · 兼容性 · JSON解析 · encoding/json 接口兼容 DisallowUnknownFields RawMessage Go JSON 未知字段
Go 的 JSON 接口如果既要兼容带新增字段的旧客户端,又要知道协议发生了什么变化,可以先正常解码结构体,再用 map[string]json.RawMessage 读取字段名并比较白名单,最后将未知字段作为可审计告警,而不是直接拒绝请求。482 收藏 -
通过业务层、bufio.Writer 缓冲层和底层 io.Writer 的分层记录,区分 Go 写入阶段错误与最终 Flush 错误,并给出第一次错误的收口方式。325 收藏 -
Go 的 encoding/json 将数字解码到 interface{} 时默认使用 float64。本文从类型断言失败和大整数精度风险出发,说明 UseNumber、json.Number 与具体结构体的选择。260 收藏 -
Go 中可以通过 Scanner.Split 注册自定义 SplitFunc,按 || 等多字节分隔符读取记录。关键是未遇到完整分隔符时等待数据、EOF 返回余量,并用 Buffer 处理记录长度上限。338 收藏