Fiddler 报告来自 API 的响应代码与调用应用程序收到的响应代码不同

Fiddler reporting different response code from API to that received by the calling app

我正在调用托管在 Azure API 管理中的 API。 API 配置为使用 Azure Active Directory 进行身份验证,因此在未经授权 header.

调用时应产生 302 重定向响应

这是我的电话:

var request = (HttpWebRequest)WebRequest.Create("MyApiEndPoint");
request.ContentType = "text/html; charset=utf-8";
request.Headers.Add("Ocp-Apim-Subscription-Key", model.SubKey);

var response = (HttpWebResponse)request.GetResponse();

当我在 fiddler 中观看调用时,我确实可以看到 302 重定向作为响应:

但是在我的呼叫应用程序中,我收到了 401 响应。

谁能解释一下这里发生了什么?

您没有根据您的要求将 AllowAutoRedirect 设置为 false

302 是重定向,因此您的请求不会将其作为响应传递,而是在重定向资源上发出新请求,然后为您提供其他请求的结果。

旁注:对于通过浏览器浏览网页的用户来说,在缺少授权时发出 302 可能没问题,以便向他显示自定义登录页面。但是对于API,直接yield 401可能更好