以為是 App Pool 的鍋,結果 IUSR 被 Windows 偷走了
上週為了讓同事拉一份檔案,我在測試機上把 IIS 專案資料夾開了個進階共用。東西傳完後我把共用關掉,繼續回頭改別的東西。 十分鐘後測試站同事回訊息:整個網站 HTTP 401,連 /favicon.ico 都打不開。 我第一個念頭是「我剛剛根本沒動 web.config 啊?」然後花了半小時繞遠路——這篇就是想分享這個坑,因為症狀跟原因之間的距離遠到不合理。 症狀 瀏覽器吃到 401 Unauthorized 連 CSS、圖片這類靜態檔都 401 IIS 沒有動過站點設定 專案程式碼沒動過 App Pool 跑得好好的,沒當機、沒停 重啟 IIS 沒用 翻開 IIS 記錄(C:\inetpub\logs\LogFiles\W3SVC...),關鍵那行: 12sc-status: 401sc-substatus: 3 401.3 的官方說明是 「Access is denied due to an ACL set on the requested resource」——翻譯:這不是 IIS 驗證設定的問題,是 NTFS 層級擋下來的。 我第一個走錯的方向本能反應是去翻 App...
curl 能下載、Node.js 卻 fetch failed——在 WSL2 + Docker 裡修好 OpenClaw Telegram Bot 圖片上傳的全過程
我用 OpenClaw 在 WSL2 + Docker 環境架了一個 Telegram Bot,接上 OpenAI Codex 的 vision model,打算讓它能看圖回答問題。結果使用者傳圖片過來,Bot 只回了一句「我看到的是 <media:image>,沒有實際圖片內容」。 這個 Bug 花了我整個晚上,最後發現根因是:OpenClaw 內部的 SSRF 防護機制建立了自己的 HTTP dispatcher,覆蓋掉了 WSL2 專用的 IPv4 網路設定,導致圖片下載靜默失敗。 curl 完全正常,Node.js fetch 卻怎麼都不行。 這篇文章記錄完整的追蹤過程。如果你也用 OpenClaw 架 Telegram Bot、或在 WSL2 + Docker 裡跑 Node.js 服務遇到 TypeError: fetch failed,這篇或許能幫上忙。 什麼是 OpenClawOpenClaw 是一個開源的 AI agent gateway,可以把 LLM(Claude、GPT、Ollama 等)接上 Telegram、Discord、Slack...
