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

使用PostAsJsonAsync请求返回403错误,但Postman请求正常

解决HttpClient调用HowLongToBeat API返回403的问题

1. 添加User-Agent请求头

网站反爬机制通常会拦截HttpClient默认的User-Agent(一般是System.Net.Http.HttpClient或.NET开头标识),而Postman会自动携带浏览器/Postman专属的User-Agent。需要手动添加符合浏览器规范的User-Agent:

修改Startup.cs中的HttpClient配置:

services.AddHttpClient(HttpClients.HowLongToBeat.ToString(), config =>
{
    config.BaseAddress = new Uri("https://www.howlongtobeat.com/");
    config.DefaultRequestHeaders.Add("Referer", "https://www.howlongtobeat.com/");
    // 模拟Chrome浏览器的User-Agent
    config.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36");
});

2. 明确设置Accept请求头

确保请求明确声明接受JSON格式响应,Postman通常会自动包含该头,但HttpClient默认的Accept规则可能不够明确:
在上述配置中添加:

config.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

3. 验证请求体序列化一致性

虽然你已使用JsonNamingPolicy.CamelCase,但需确认序列化结果和Postman请求体完全匹配:

  • 检查SearchTerms数组:若searchTerm是单个词(如"mario"),Split(" ")生成的["mario"]和Postman一致;若为多词,需确保分割逻辑正确。
  • 验证嵌套对象属性名:比如UserId是否序列化为userId、SortCategory是否为sortCategory等。可通过临时序列化并输出字符串对比:
var json = JsonSerializer.Serialize(request, new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
Console.WriteLine(json); // 和Postman的请求体文本逐一比对

4. 禁用自动重定向(可选)

部分场景下网站的重定向逻辑会触发403,尝试关闭HttpClient自动重定向:

services.AddHttpClient(HttpClients.HowLongToBeat.ToString(), config =>
{
    // 其他配置...
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
    AllowAutoRedirect = false
});

5. 同步Cookie(可选)

如果Postman请求携带了会话Cookie,需在HttpClient中同步Cookie:

var cookieContainer = new CookieContainer();
// 可从Postman的请求头中复制Cookie值,手动添加到容器
cookieContainer.Add(new Uri("https://www.howlongtobeat.com/"), new Cookie("cookieName", "cookieValue"));

services.AddHttpClient(HttpClients.HowLongToBeat.ToString(), config =>
{
    // 其他配置...
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
    CookieContainer = cookieContainer,
    UseCookies = true
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:05:26