Go语言技术文章
-
讲清 Go http.Request.Clone 复制请求并替换目标 URL 的正确写法,覆盖 Host、RequestURI、查询参数和 Body 重发边界。412 收藏 -
Go DNS 查询在容器里超时时,不要先把问题归因于业务服务。本文用容器内 resolv.conf、net.Resolver、Resolver.Dial、DNSError 和直连 IP,把配置、DNS 网络、解析响应与业务连接分层排查。248 收藏 -
Go url.Values 的空值并不等于没有参数:空字符串会编码成 key=,空切片不会输出该键,重复值会按添加顺序展开。本文用 Encode 和 ParseQuery 对照说明三种状态,并给出 Set、Add、Del 的选择边界。209 收藏 -
Go 使用 net/http 访问 IPv6 地址时,URL 格式错误通常来自缺少方括号或直接拼接 host:port。本文用 net.JoinHostPort 和 url.URL 说明正确构造方式,并区分格式、解析和连接错误。261 收藏 -
Go net/url 处理重复查询参数时,应从 url.Values 的 []string 读取并用 Add 追加;本文说明 Get、Set、Encode 与 RawQuery 的顺序边界。415 收藏 -
Go TLS 配置 MinVersion 后旧客户端无法连接,通常是双方允许的协议版本没有交集。本文用版本范围、握手错误和 ConnectionState 说明如何定位,并给出兼容策略。483 收藏 -
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 收藏 -
Go 请求设置 Context 超时后,客户端会先结束这次请求的等待,但连接池状态和服务端任务不一定同时消失。本文区分请求取消、Transport 连接复用、响应体关闭以及服务端 Context 传播,给出可执行的排查和处理方式。180 收藏 -
讲清 Go 1.22+ http.ServeMux 的父子树路由、方法匹配、具体性优先、通配符、405 与尾斜杠边界。270 收藏 -
Go 的 http.CookieJar 没有一个叫 Clear 的公开方法。要清理过期 Cookie,通常让 jar 按 Expires 和 MaxAge 过滤,登出时再发送匹配域名与路径的删除 Cookie;如果问题仍然存在,就从目标 URL、Domain 和 Path 三个维度核对。181 收藏 -
用 Go encoding/xml 的结构体标签把重复 XML 子节点映射到切片,并处理嵌套路径、缺失节点与重复解码残留。279 收藏 -
Golang · Go问答 | 4星期前 | 重定向 · 排查 · 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 收藏