You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RestClient请求接口正常但HttpWebRequest返回403,求原因及修复方案

问题成因

  • RestClient默认会自动填充User-Agent、Accept等标准HTTP请求头,而原生HttpWebRequest默认不会主动设置这些头,目标站点的WAF/CDN规则拦截了缺少必要头的请求,直接返回403禁止访问。
  • 除此之外HttpWebRequest默认的TLS版本可能不符合目标站点要求,目前绝大多数站点已经不再支持旧版TLS 1.0/1.1,默认配置如果没有启用高版本TLS也会触发拦截。

修复方案

无需修改现有业务逻辑,只需要给HttpWebRequest补充必要配置即可,修改后的代码如下:

// TLS版本全局配置,建议放在程序启动入口处,无需重复设置
// 如果是低版本.NET Framework不支持Tls13,仅保留Tls12即可
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;

HttpWebRequest httpsRequest = (HttpWebRequest) WebRequest.Create(source);
httpsRequest.Method = "GET";
// 补充合法的User-Agent头,可根据实际场景替换为其他合法UA值
httpsRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
// 补充匹配XML请求的Accept头
httpsRequest.Accept = "application/xml, text/xml, */*";
var response = httpsRequest.GetResponse();

少数严格的站点如果仍返回403,可额外补充httpsRequest.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9")增加语言头即可。


内容的提问来源于stack exchange,提问作者jcmag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:54:07