首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
搜索
登录
搜索
一笑痕
人生若只如初见,
是可喜亦或者是可悲?
累计撰写
259
篇文章
累计收到
7
条评论
首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
包含标签 【HTTP】 的文章
2026-11-4
HTTP 响应体收完后,校验值才出现在 trailers
HTTP trailers 在响应正文结束后到达,Node 的 http 客户端会把它们放进 trailers;Node fetch 能读到 Trailer 声明,却没有暴露尾部字段的接口。本机回环服务对两种客户端作了对照。
2026年-11月-4日
4 阅读
0 评论
全栈
2026-10-28
Range 的结束位置也包含在返回区间里
Range 请求的起止位置按字节计,结束位置包含在内;后缀范围从资源末尾倒数,越界起点则应返回 416 和完整长度。本机用 Node.js 服务及 fetch 验证 206、Content-Range 与正文边界。
2026年-10月-28日
28 阅读
0 评论
全栈
2026-10-27
103 已经到达,客户端为什么还等着?
103 Early Hints 是最终响应之前的提示,不会结束请求。用 Node.js 本机服务发送带 Link 的 103,再由 HTTP 客户端接收信息事件,确认它随后仍会等待 200 和正文。
2026年-10月-27日
43 阅读
0 评论
全栈
2026-10-25
缓存 HTML 没换,CSP nonce 却先变了
CSP nonce 必须同时出现在响应策略与 HTML 脚本标签中。若缓存保留旧 HTML、响应层却每次重发新 nonce,二者就会失配;本机用 Node.js 构造缓存命中,逐项比较响应头与正文。
2026年-10月-25日
48 阅读
0 评论
全栈
2026-10-24
Vary 让 Accept-Encoding 区分响应
同一个 URL 收到 identity 与 gzip 请求时,Node 服务端返回不同编码的响应,并用 Vary: Accept-Encoding 标明选择依据。实测只覆盖本机请求和响应,不代表浏览器或代理缓存已经按预期分开存储。
2026年-10月-24日
38 阅读
0 评论
全栈
2026-10-20
同一个 302,同源保住 Authorization,换个端口就没了
19 个字符的 Authorization 在同源 302 后原样到达,换成另一个端口就剩 0 个字符,换成 localhost 也一样。Node 的两个服务对着测,Cookie 一起被删,x-api-key 活着。
2026年-10月-20日
57 阅读
0 评论
全栈
2026-10-19
JSON 请求发不出去时,先看 OPTIONS
跨域 POST 的 Content-Type 会影响浏览器是否先发预检。text/plain 与表单类型可直接发送,application/json 会触发 OPTIONS;服务器要正确回应预检,正式请求才会继续。
2026年-10月-19日
52 阅读
0 评论
全栈
2026-10-19
别把 req.headers 当成原始报文
Node 的 req.headers 会把字段名转小写,并按字段类型合并重复项。req.headersDistinct 保留每个值,rawHeaders 还保留原始字段名与顺序,签名和审计代码别拿错对象。
2026年-10月-19日
59 阅读
0 评论
后端技术
2026-10-14
POST 在哪一步变成 GET,302 与 303 的差别
让 POST 跟一次跳转:302 与 303 到终点时方法已是 GET,请求体从 4 字节掉到 0;307 与 308 原样保留。跨源那一跳上 Authorization 与 Cookie 被剥掉。
2026年-10月-14日
56 阅读
0 评论
全栈
2026-10-13
180 字节的响应体,头要付 2086 字节
180 字节的响应,一个来回 456 字节,头占 60.5%。Cookie 加到 1800 字节,来回涨到 2266 字节,体只剩 7.9%。gzip 只动体,404 与 304 没有体,头照付。
2026年-10月-13日
50 阅读
0 评论
全栈
2026-10-12
发布上线了,一部分用户看到的还是上一版
静态资源的缓存头写得很足,顺手也给 index.html 配了同样的一年强缓存。发布完新版本,一部分用户刷新多少次都还是旧页面,服务端那边一次请求都没有。本机按两种响应头把这套流程复现一遍,看请求到底有没有发出去。
2026年-10月-12日
62 阅读
0 评论
全栈
2026-10-11
导出接口的中文文件名,浏览器存下来是乱码
后端把中文文件名直接写进 Content-Disposition 的 filename,落盘时变成一串带重音符的字母。规范里非 ASCII 要用 RFC 5987 的 ext-value 写进 filename,两个参数同时出现时收件方取 filename。把这段的解析规则和实测放在一起看。
2026年-10月-11日
67 阅读
0 评论
全栈
2026-10-7
重连之后列表多出三条重复消息,补数据的那一步写错了
页面用 SSE 推列表,网络抖一下重连之后多出三条重复记录。服务端不看 Last-Event-ID 这个头,重连就是从头推一遍。附四种重连写法的实测结果,以及把 id 当字符串比较时事件超过九条就断档的原因。
2026年-10月-7日
76 阅读
0 评论
全栈
2026-10-7
两个长度头同时出现,Node 回 400 Bad Request
Content-Length 与 Transfer-Encoding 一起出现在一个请求里,规范要求当错误处理,Node 直接回 400,处理函数一行都跑不到。九条手工拼的报文实测下来,只有三条进到业务代码,另外六条被解析层拦下。附 RFC 9112 原文与六种拒绝姿势的错误码。
2026年-10月-7日
74 阅读
0 评论
后端技术
2026-9-30
206 只发了 10 个字节,长度声明却写 1024
拖动进度条和断点续传都走 Range 请求。返回 206 时 Content-Length 该写这条消息的正文长度,不是整个文件的长度;写成后者,本机 curl 报 18 并停在那里。规范条文与本机六组实测对照。
2026年-9月-30日
97 阅读
0 评论
全栈
2026-9-29
别用 X-Forwarded-For 最左边那段,那是客户端自己填的
同一台机器发五个请求,各自往 X-Forwarded-For 里塞一个不同的 IP,后端按第一个值取客户端地址,就得到五个不同身份,限流和黑名单同时失效。两层代理本机搭起来实测:取值位置放在哪一段,结果完全不同,取最后一个才稳定。
2026年-9月-29日
73 阅读
0 评论
全栈
2026-9-26
两个缓存校验头一起到达,规范要求忽略旧的那个
一个资源同时带 ETag 和 Last-Modified,客户端下次可能把两个校验头一起发回来。RFC 9110 把优先级写得很直白:If-None-Match 在场时,If-Modified-Since 必须被忽略。本机用两个实现跑同一组请求,看状态码在哪一格分叉,顺带撞上弱校验与秒级粒度两个坑。
2026年-9月-26日
79 阅读
0 评论
全栈
2026-9-25
204 带着错误信息回来,客户端只拿到空串
服务端用 204 回了一个「订单不存在」,body 里那句提示一个字都到不了客户端:报文里连 Content-Length 都没有,fetch 读到的是空串,按 JSON 解析直接抛 SyntaxError。从起服务到抓原始报文,一步步复现并给出客户端的兜底写法。
2026年-9月-25日
103 阅读
0 评论
全栈
2026-9-24
302 跳转之后 POST 变成 GET,订单号在中间那跳丢了
301、302、303 会把跟随重定向的 POST 改写成 GET,请求体一并丢弃;307 和 308 才保留方法与请求体。差别在服务器收到的请求体长度上,一个 23 一个 0。
2026年-9月-24日
113 阅读
0 评论
全栈
2026-9-23
Set-Cookie 别拼成一行,两个 Cookie 会变成一个
网关转发上游响应时,把 Set-Cookie 数组按逗号拼成一行,是一条很常见的写法。实测下来两个 Cookie 会合并成一条,带 Expires 的那条还会被逗号切成两条。规范里这条头本来就不允许合并,Node 的 setHeader 也接受数组。
2026年-9月-23日
113 阅读
0 评论
全栈
1
2