首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
搜索
登录
搜索
一笑痕
人生若只如初见,
是可喜亦或者是可悲?
累计撰写
259
篇文章
累计收到
7
条评论
首页
热点话题
全栈
开发工具
经典语录
前端技术
后端技术
智能体
包含标签 【接口设计】 的文章
2026-11-4
HTTP 响应体收完后,校验值才出现在 trailers
HTTP trailers 在响应正文结束后到达,Node 的 http 客户端会把它们放进 trailers;Node fetch 能读到 Trailer 声明,却没有暴露尾部字段的接口。本机回环服务对两种客户端作了对照。
2026年-11月-4日
28 阅读
0 评论
全栈
2026-10-28
Range 的结束位置也包含在返回区间里
Range 请求的起止位置按字节计,结束位置包含在内;后缀范围从资源末尾倒数,越界起点则应返回 416 和完整长度。本机用 Node.js 服务及 fetch 验证 206、Content-Range 与正文边界。
2026年-10月-28日
53 阅读
0 评论
全栈
2026-10-27
103 已经到达,客户端为什么还等着?
103 Early Hints 是最终响应之前的提示,不会结束请求。用 Node.js 本机服务发送带 Link 的 103,再由 HTTP 客户端接收信息事件,确认它随后仍会等待 200 和正文。
2026年-10月-27日
65 阅读
0 评论
全栈
2026-10-22
HEAD 回了完整长度,响应体却是空的
Node.js 的 HTTP 服务收到 HEAD 时,仍可返回与 GET 相同的 Content-Length,但响应体会被省略。本机实验对照两种方法的状态码、头部和实际字节数,也检查了服务端处理函数是否仍会运行。
2026年-10月-22日
66 阅读
0 评论
全栈
2026-10-21
服务器回 417 时,上传正文还没发出去
大请求体发出前,客户端可以用 Expect: 100-continue 先等待服务器许可。本文用 Node.js 本机实验验证接受与拒绝两条路径,并说明浏览器 fetch 与原生 HTTP 客户端的能力边界。
2026年-10月-21日
70 阅读
0 评论
全栈
2026-10-20
同一个 302,同源保住 Authorization,换个端口就没了
19 个字符的 Authorization 在同源 302 后原样到达,换成另一个端口就剩 0 个字符,换成 localhost 也一样。Node 的两个服务对着测,Cookie 一起被删,x-api-key 活着。
2026年-10月-20日
73 阅读
0 评论
全栈
2026-10-19
JSON 请求发不出去时,先看 OPTIONS
跨域 POST 的 Content-Type 会影响浏览器是否先发预检。text/plain 与表单类型可直接发送,application/json 会触发 OPTIONS;服务器要正确回应预检,正式请求才会继续。
2026年-10月-19日
64 阅读
0 评论
全栈
2026-10-19
别把 req.headers 当成原始报文
Node 的 req.headers 会把字段名转小写,并按字段类型合并重复项。req.headersDistinct 保留每个值,rawHeaders 还保留原始字段名与顺序,签名和审计代码别拿错对象。
2026年-10月-19日
77 阅读
0 评论
后端技术
2026-10-17
中文和 emoji 把 Content-Length 算大了
JavaScript 的 string.length 数的是 UTF-16 代码单元,HTTP Content-Length 数的是消息正文的字节。中文和 emoji 会让两种长度分开,Node.js 用 Buffer.byteLength(body, 'utf8') 才能得到 UTF-8 正文长度。
2026年-10月-17日
76 阅读
0 评论
后端技术
2026-10-16
Node fetch 发 ReadableStream,漏写 duplex 会先报错
Node v26.8.1 用 ReadableStream 作为 POST 请求体时,少了 duplex 会在请求发出前抛 TypeError;补上 duplex: 'half' 后,本机服务端收到 12 字节正文并返回 200。
2026年-10月-16日
197 阅读
0 评论
全栈
2026-10-15
fetch 收到 204,json() 仍然会抛错
本机用 Node fetch 请求本地 204 接口,fetch 正常返回且 ok 为 true,json() 却因空响应体抛出 SyntaxError。按接口约定先处理无内容响应,再决定是否解析 JSON。
2026年-10月-15日
60 阅读
0 评论
全栈
2026-10-14
POST 在哪一步变成 GET,302 与 303 的差别
让 POST 跟一次跳转:302 与 303 到终点时方法已是 GET,请求体从 4 字节掉到 0;307 与 308 原样保留。跨源那一跳上 Authorization 与 Cookie 被剥掉。
2026年-10月-14日
69 阅读
0 评论
全栈
2026-10-7
两个长度头同时出现,Node 回 400 Bad Request
Content-Length 与 Transfer-Encoding 一起出现在一个请求里,规范要求当错误处理,Node 直接回 400,处理函数一行都跑不到。九条手工拼的报文实测下来,只有三条进到业务代码,另外六条被解析层拦下。附 RFC 9112 原文与六种拒绝姿势的错误码。
2026年-10月-7日
90 阅读
0 评论
后端技术
2026-9-30
206 只发了 10 个字节,长度声明却写 1024
拖动进度条和断点续传都走 Range 请求。返回 206 时 Content-Length 该写这条消息的正文长度,不是整个文件的长度;写成后者,本机 curl 报 18 并停在那里。规范条文与本机六组实测对照。
2026年-9月-30日
109 阅读
0 评论
全栈
2026-9-28
网关先验签再解析 JSON,解析器拿到的是空串
签名校验通过,JSON 解析报 Unexpected end of JSON input,两个中间件各自都认为自己做对了。请求体是一支只能读一次的流,谁先读完谁拿全,后面的人拿到 0 字节。六条检查项把这件事的边界钉住,包括为什么这类 bug 不会在日志里留下痕迹。
2026年-9月-28日
98 阅读
0 评论
全栈
2026-9-28
响应里的中文只回来一半,长度该算字节还是字符
接口在本地跑得好好的,上线之后客户端偶尔收到一段断掉的 JSON,报错是 Unterminated string。同一份响应体,用字符数算长度是 63,用字节数是 91,中间差的 28 字节正好是 14 个汉字各多占的两字节。长度声明错在哪、客户端分别怎么反应,都跑了实测。
2026年-9月-28日
100 阅读
0 评论
后端技术
2026-9-27
翻到第二页,第一页的三行又出现了
列表按 id 倒序分页,每页 10 条,用户在第二页看到第一页见过的三行。数据没重复,差在 LIMIT 与 OFFSET 的锚点写着「第几行」,而行本身在动。新增写入造成重复,删除造成漏行,连翻六页时 60 行里有 15 行是重复的。
2026年-9月-27日
81 阅读
0 评论
全栈
2026-9-25
204 带着错误信息回来,客户端只拿到空串
服务端用 204 回了一个「订单不存在」,body 里那句提示一个字都到不了客户端:报文里连 Content-Length 都没有,fetch 读到的是空串,按 JSON 解析直接抛 SyntaxError。从起服务到抓原始报文,一步步复现并给出客户端的兜底写法。
2026年-9月-25日
112 阅读
0 评论
全栈
2026-9-24
302 跳转之后 POST 变成 GET,订单号在中间那跳丢了
301、302、303 会把跟随重定向的 POST 改写成 GET,请求体一并丢弃;307 和 308 才保留方法与请求体。差别在服务器收到的请求体长度上,一个 23 一个 0。
2026年-9月-24日
131 阅读
0 评论
全栈
2026-9-16
接口能返回数据,未知路径的请求一直挂着
只用 http 模块起一个服务,能返回数据不等于接口是完整的。九条自检项对着一个最小实现实测,每条给结论和一行补救代码。
2026年-9月-16日
153 阅读
0 评论
全栈
1
2