【问题标题】:Webrequest returns 401 but same request using postman worksWebrequest 返回 401 但使用邮递员的相同请求有效
【发布时间】:2014-11-27 13:06:31
【问题描述】:

我有一个调用 webapi Web 服务 (iis 6) 的 c# 客户端。我能够从邮递员成功执行我的网络呼叫 - 无身份验证(正常选项卡)。 来自 c# webclient 的相同调用失败。

查看提琴手中的请求,我看不出两者之间有什么区别。

以下是我发送的请求(邮递员和网络客户端),没有设置任何标头。

https://store.isswerver.com/api/details/Users - 从邮递员客户端成功

使用 c# 客户端返回 401

_client = new WebClient();
_client.Headers.Add("Content-Type", "application/json; charset=utf-8");
_client.Headers.Add("Accept", "application/json");
 byte[] data = _client.DownloadData(string.Format("{0}/Users", _apiUrl));

如果我在本地机器上运行网站,客户端确实可以工作。

邮递员提交请求的方式有何不同?

【问题讨论】:

  • HTTP 401 表示未经授权,所以我假设您在通过浏览器发出请求时已登录?
  • 如果设置 _client.UseDefaultCredentials = true 会发生什么?
  • _client.UseDefaultCredentials = true 已修复,我发誓我已经尝试过了 谢谢!

标签: c# asp.net asp.net-web-api webclient postman


【解决方案1】:

使用嗅探器检查 Postman 实际通过网络发送的内容,并将其与您发送的内容进行比较,以发现 任何 类型的差异,包括标头和有效负载。

401 Unauthorized 通常意味着您没有提供身份验证凭据,但是服务器可以出于任何原因返回他们想要的任何状态代码(例如,如果他们不喜欢用户代理,没有什么可以阻止他们返回 401 状态)。

【讨论】:

    猜你喜欢
    • 2019-05-23
    • 2021-01-21
    • 2021-08-31
    • 2021-01-14
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多