Go语言技术文章
-
url.ParseQuery 会把重复键保存为字符串切片;未编码分号会让对应片段无效,但有效参数仍可能保留。本文讲清读取方式、错误处理与 HTTP 接口边界。455 收藏 -
FileHeader.Filename 是客户端提交的展示元数据,即使 Go 做了基础名处理,也不应直接决定服务器路径。本文用随机存储名、扩展名白名单和受控目录完成安全保存。412 收藏 -
讲清 Go net/url 中 Path、RawPath 与 EscapedPath 的关系,演示如何保留合法编码斜杠,以及改写路径后如何避免 RawPath 失配。153 收藏 -
ReadForm 的 maxMemory 主要约束文件内容,普通字段仍以字符串保存在内存。本文拆解其预算边界,并给出请求体、字段与临时文件的安全限制方法。202 收藏 -
Go 的 url.JoinPath 能在拼接 URL 路径时清理点号段和重复斜杠。本文通过后端接口地址实验讲清函数与方法差异、尾斜杠规则、路径转义和安全边界。274 收藏 -
Go 的 multipart.Writer 设置自定义 boundary 时,必须在创建第一个 Part 前完成。本文解释调用顺序、请求头一致性、参数限制与排查清单。284 收藏 -
介绍 Go 1.24+ 的 http.Server.Protocols,给出 HTTP/1、TLS HTTP/2、明文 HTTP/2 的显式配置、验证命令与兼容边界。227 收藏 -
解释 Go mime/multipart 的 NextPart 为什么隐藏 Content-Transfer-Encoding 并在读取时自动解码 quoted-printable,给出 NextRawPart 保留原始字节的写法与选择边界。474 收藏 -
用 fstest.MapFS 构造内存文件系统,把 http.NewFileTransportFS 注册到 file 协议,再用 http.Client 验证静态资源读取、缺失文件 404 和响应体关闭边界。422 收藏 -
解释 Go slog.WithGroup 空组名的真实行为,区分无操作、命名组与空键 Group 的内联规则,并给出自定义 Handler 和字段冲突的处理方式。260 收藏 -
介绍 Go http.ResponseController.SetWriteDeadline 的单次响应用法,说明绝对期限、缓冲写入、Flush、ResponseWriter 包装器、ErrNotSupported 与 context、Server.WriteTimeout 的分工。202 收藏 -
解释 Go slog LevelVar 修改后旧 Handler 仍能生效的原因,比较动态 Leveler 与静态 slog.Level 快照,并给出配置和测试方法。193 收藏 -
讲解 Go multipart 上传文件名的安全处理:原名只作展示,限制请求体,按内容识别类型,生成随机存储名,并用 O_EXCL 防止覆盖已有文件。389 收藏 -
解释 Go slog LogValuer 递归引用为何会得到错误值,拆解 Value.Resolve 的有限求值、Group 边界、Handler 处理方式和四组测试。158 收藏 -
Go multipart.Reader 的 ReadForm 不会让所有文件都永久驻留内存,但 maxMemory 只控制解析预算的一部分。本文用 MaxBytesReader、ReadForm 和 RemoveAll 组合出可控的上传处理方案,并解释 ErrMessageTooLarge、临时文件和部件数量限制。241 收藏