2026-08-19 14:30:00
<h2 id="问题描述"><a href="#问题描述" class="headerlink" title="问题描述"></a>问题描述</h2><p>浏览器发送 OPTIONS 预检请求后,Nginx 返回了 204 响应,且 <code>Access-Control-Allow-Headers</code> 设置为 <code>*</code>,但浏览器仍然报错:</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Access to XMLHttpRequest at 'http://.../api/...'</span><br><span class="line">from origin 'http://...' has been blocked by CORS policy:</span><br><span class="line">Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.</span><br></pre></td></tr></table></figure><span id="more"></span><h2 id="根因分析"><a href="#根因分析" class="headerlink" title="根因分析"></a>根因分析</h2><h3 id="W3C-Fetch-规范限制"><a href="#W3C-Fetch-规范限制" class="headerlink" title="W3C Fetch 规范限制"></a>W3C Fetch 规范限制</h3><p>根据 <a href="https://fetch.spec.whatwg.org/#cors-preflight-fetch">W3C Fetch Standard</a> 规范:</p><blockquote><p>When <strong>credentials mode is “include”</strong>(即 <code>Access-Control-Allow-Credentials: true</code>),the following headers must <strong>NOT</strong> use wildcard <code>*</code>:</p><ul><li><code>Access-Control-Allow-Origin</code></li><li><code>Access-Control-Allow-Headers</code></li><li><code>Access-Control-Allow-Methods</code></li></ul></blockquote><p><strong>简而言之:<code>Access-Control-Allow-Credentials: true</code> 与通配符 <code>*</code> 互斥。</strong></p><h3 id="问题响应示例"><a href="#问题响应示例" class="headerlink" title="问题响应示例"></a>问题响应示例</h3><figure class="highlight http"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">Access-Control-Allow-Credentials</span><span class="punctuation">: </span>true ← 要求明确列出允许的值</span><br><span class="line"><span class="attribute">Access-Control-Allow-Headers</span><span class="punctuation">: </span>* ← 通配符,浏览器直接忽略并拒绝</span><br><span class="line"><span class="attribute">Access-Control-Allow-Methods</span><span class="punctuation">: </span>* ← 同上</span><br></pre></td></tr></table></figure><p>浏览器检测到 credentials 模式下 <code>Allow-Headers</code> 为 <code>*</code>,认为这是一个无效的 CORS 响应,因此拦截了实际请求。</p><h2 id="修复方案"><a href="#修复方案" class="headerlink" title="修复方案"></a>修复方案</h2><p>将 Nginx 配置中的通配符替换为显式列举的值:</p><h3 id="修改前"><a href="#修改前" class="headerlink" title="修改前"></a>修改前</h3><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">add_header</span> Access-Control-Allow-Methods <span class="string">"*"</span> always;</span><br><span class="line"><span class="attribute">add_header</span> Access-Control-Allow-Headers <span class="string">"*"</span> always;</span><br></pre></td></tr></table></figure><h3 id="修改后"><a href="#修改后" class="headerlink" title="修改后"></a>修改后</h3><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">add_header</span> Access-Control-Allow-Methods <span class="string">"GET, POST, PUT, DELETE, OPTIONS, PATCH, HEAD"</span> always;</span><br><span class="line"><span class="attribute">add_header</span> Access-Control-Allow-Headers <span class="string">"content-type, authorization, x-requested-with, x-custom-header, accept, origin"</span> always;</span><br></pre></td></tr></table></figure><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><ul><li><a href="https://fetch.spec.whatwg.org/#cors-preflight-fetch">Fetch Standard - CORS Preflight</a></li><li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials">MDN - CORS: Access-Control-Allow-Credentials</a></li><li><a href="https://caniuse.com/cors">Can I Use - CORS</a></li></ul>
2026-08-07 10:30:00
<p>贪便宜买的三年京东云,年年都能给你整点不一样的惊吓😂。阿里云腾讯云用了十来年都没碰到过一次糟心事。</p><p>2023 年 10 月买的京东云轻量云主机,有效期 3 年。</p><p><img src="/gallery/2025/fk-jdcloud/1786069127773.webp"></p><p>2024 年 3 月,发现硬盘 I/O 严重问题,最低时仅有 3MB/s,可以看我之前发的<a href="https://www.imaegoo.com/2024/jdcloud-bench/">这篇文章</a>,即使后来客服给换成了 SSD,也只达到勉强能用的 60MB/s,不是哥们,我家监控的 TF 卡都比这个快…</p><span id="more"></span><img src="/gallery/2025/fk-jdcloud/1786069176818.webp" style="max-height: none"><p>2025 年 7 月,服务不可用长达 18 个小时,补偿是延长 6 天有效期?</p><img src="/gallery/2025/fk-jdcloud/1786069207717.webp" style="max-height: none"><p><img src="/gallery/2025/fk-jdcloud/1786069846634.webp"></p><p>2026 年 8 月,突然通知月底前必须完成备案,否则拦截请求,而备案又要求云主机有效期大于 3 个月,此时距离我这台云主机到期还有 2 个月又 25 天,意思就是不续费剩下两个月别想用了。</p><p><img src="/gallery/2025/fk-jdcloud/1786069231909.webp"></p><p><img src="/gallery/2025/fk-jdcloud/1786069516716.webp"></p><p><img src="/gallery/2025/fk-jdcloud/1786069617349.webp"></p><p><img src="/gallery/2025/fk-jdcloud/1786069584056.webp"></p><hr><p>后续:客服给了一个备案授权码,正在完成备案。</p>
2026-05-23 09:30:00
<p>分享一个今天的生产问题,某系统直接访问正常,经过负载均衡就报连接被重置 <code>Connection Reset</code>,在机房查了两个多小时,最后发现是后端 Java 设置响应头的时候 <code>setHeader("Expires ", xxx)</code>,Expires 后面多打了一个空格,导致响应头不符合 HTTP Header 规范(<code>key: value</code>),负载均衡处理不了这种不规范的响应头,直接丢包了。</p><p>排查过程难就难在,浏览器有容错,所以直接连接后端就没问题,也没有任何警告,后端也没有任何报错,负载均衡也没有任何报错,排除了一圈感觉谁都没问题,问 AI 也没用,这多的一个空格在响应头里,浏览器 Network 看不到,不用抓包工具根本发现不了,所以把这段经验分享给大家。</p>
2026-05-21 18:30:00
<p>领导要求每人每周至少用 1 亿 token。但给的模型又太笨,参数 35B-A3B,上下文不到 100K,干啥啥不行,我人工去优化它生成的垃圾代码,还不如我自己写一遍快,不用又要被谈话。结果就是会用 AI 的人看不上,不会用 AI 的人用不上。因为一些没办法明说的原因,这考核指标又不是说取消就能取消的(以前还考核过代码行数、AI / 人工代码占比,结果就是鼓励写重复冗余的垃圾代码)。那要怎样才能让 Claude Code 快速刷够 1 亿 token 呢?开个 Claude Code 窗口发</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/loop 1m 读取本项目中的所有源码,逐一进行详细总结,然后生成一份全面的架构分析报告,包含优缺点评估以及重构建议。</span><br></pre></td></tr></table></figure><p>这样跑几个小时就有了。</p>
2026-05-18 08:30:00
<p>高德地图开屏广告是我最恶心的广告了,没有之一。你要是微博、抖音有个开屏广告,我能理解,一般这个时候我都有闲工夫去看你的广告。你一个导航 app,我只有需要导航的时候才会打开,你这时候给我蹦个开屏广告,还扭动、转动前倾跳转,你是不是觉得大家开车的时候手机都会晃动,才故意这样设计的?我准备开车的时候有时间去看你的广告吗?你弹广告加摇一摇跳转的行为只会让我对你的广告内容更加恶心。</p><span id="more"></span><img src="/gallery/2025/amap-ad/1779067098138.webp" style="width: 45%" /><img src="/gallery/2025/amap-ad/1779067093273.webp" style="width: 45%" /><p>更恶心的是,高德地图是我手机中唯一无法通过 GKD 跳过广告的 app,如果你用 GKD 快照,会提示“当前应用没有无障碍信息,捕获失败”,开 Shizuku 开自动化都不行,如果你用 <code>uiautomator dump</code> 捕获,会提示 <code>ERROR: null root node returned by UiTestAutomationBridge.</code>,行吧,今天要是治不了你,我就直接把你卸了。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">adb shell</span><br><span class="line">su</span><br><span class="line"><span class="built_in">cd</span> /data/user/0/com.autonavi.minimap/files/</span><br><span class="line"><span class="built_in">rm</span> -rf splash/</span><br><span class="line"><span class="built_in">touch</span> splash</span><br><span class="line"><span class="built_in">chmod</span> 000 splash</span><br></pre></td></tr></table></figure><p>哼</p>
2026-04-20 12:00:00
<p>今天在 Windows 或 macOS 上安装或更新 Claude Code 后,运行 <code>claude</code> 命令却报错 <code>claude native binary not installed</code>(macOS)、<code>程序 claude.exe 无法运行</code>(Windows)。折腾了一番终于搞清楚了原因。</p><span id="more"></span><h2 id="原因分析"><a href="#原因分析" class="headerlink" title="原因分析"></a>原因分析</h2><p>Claude Code 自 <strong>2.1.113</strong> 版本开始改为分发二进制包,不再分发 JS 源码。</p><p>用 npm 安装 claude 时,它会通过 <code>optionalDependencies</code> 来安装不同平台的二进制包。</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">"optionalDependencies"</span><span class="punctuation">:</span> <span class="punctuation">{</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-darwin-arm64"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-darwin-x64"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-linux-x64"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-linux-arm64"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-linux-x64-musl"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-linux-arm64-musl"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-win32-x64"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span><span class="punctuation">,</span></span><br><span class="line"> <span class="attr">"@anthropic-ai/claude-code-win32-arm64"</span><span class="punctuation">:</span> <span class="string">"2.1.114"</span></span><br><span class="line"><span class="punctuation">}</span><span class="punctuation">,</span></span><br></pre></td></tr></table></figure><p>然而 Windows 平台的二进制包有足足 <strong>234MB</strong> 大,国内常用的阿里 npm 镜像站(<a href="https://npmmirror.com/">https://npmmirror.com</a>)默认不会同步这种巨大的 npm 包,导致找不到该包。</p><p><img src="/gallery/2025/claude-code-native-binary-not-installed/1776668457152.webp"></p><blockquote><p>为什么阿里不同步巨型包?我猜跟 24 年的这次事件有关——<a href="https://juejin.cn/post/7371074808149917750">《庆余年2》遭遇“开源”盗版,npm社区“被迫”暂停服务</a></p></blockquote><p>又因为 <code>optionalDependencies</code> 是可选依赖,npm 在安装时<strong>不会报任何错误</strong>,看起来安装成功了,实则二进制文件根本没有装上。</p><h2 id="解决方案"><a href="#解决方案" class="headerlink" title="解决方案"></a>解决方案</h2><p>安装时指定强制从官方 npm 源下载即可:</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g @anthropic-ai/claude-code --registry=https://registry.npmjs.org</span><br></pre></td></tr></table></figure><p>或者不安装最新版,安装最后一个使用 js 的版本:</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g @anthropic-ai/[email protected]</span><br></pre></td></tr></table></figure>