相同HTTP请求在Linux与Windows环境下返回不同响应问题排查
跨平台HTTP请求返回不一致:Windows返回200 OK,Linux/WSL返回403 Forbidden
我执行以下请求:
curl https://www.ah.nl/ -H "User-Agent:"
- Windows系统返回
200 OK响应,但在WSL及独立远程Linux服务器中执行时,返回403 Forbidden页面。两者(远程服务器除外)来自同一电脑、同一WiFi网络、同一IP,但服务器表现差异明显。 - 此问题与
curl无关:已在WSL和Windows主机上分别测试Node.jsfetch、Python3requests及Rustreqwest,结果完全一致;手机Termux中用curl(移动网络)测试也得到403。另外我能通过浏览器正常访问该网站,因此不存在IP封禁情况。
更新1:在WSL中运行Firefox可正常访问该网站,但将Firefox开发者工具网络面板复制的cURL请求直接执行时,仍无法成功返回200,这与常规HTTP通信逻辑相悖。
更新2:通过调试代理Fiddler从WSL执行该请求可成功返回200,这似乎排除了请求本身的问题,但无法解释WSL中Firefox能正常访问的原因。
更新3:通过WSL中的mitmproxy执行请求也可成功返回200,这是否意味着问题源于Linux的HTTP客户端库?目前我无法分析返回403 Forbidden的请求与成功请求之间的差异,想知道服务器是如何识别出两类请求的不同,以及它们具体的差异点在哪里。
内容的提问来源于stack exchange,提问作者user8649828
相关产品推荐
相关产品推荐

