c# - 为什么我在使用带有安全 URL 的 HttpResponseMessage 时得到 401 未经授权?

标签 c# asp.net-mvc asp.net-web-api

我有这个专有代码,我正在为我的工作而努力。 我正在为它编写测试用例,因为代码已更改并且测试用例现在已损坏。 这是一个 C# web Api MVC .Net Framework 应用程序

我有一个方法可以在其中输入一个字符串 url 然后这段代码执行

HttpResponseMessage response = await Client.GetAsync(url).ConfigureAwait(true);
System.Uri uri = new System.Uri(url); // convert string to Uri
var cert = System.Net.ServicePointManager.FindServicePoint(uri).Certificate;
response.EnsureSuccessStatusCode();

当它到达 response.EnsureSuccessStatusCode() 时,它给出 401 unauthorized 然后抛出一个异常不允许我的测试通过 当我用 http://www.google.com 尝试同样的事情时这不是 https,那么 它给出了 200。所以安全问题正在发生

我需要做什么才能让 https 获得 200?它是否需要用户名和密码凭据或其他某种 token ?

此外,当我使用 Rest Client DHC 和上面失败的安全 https 链接对其进行测试时,它给了我 200。但是,我必须刷新承载 token 才能给它 200。如果我使用旧 token 它会给出 401。

此外,当我测试像 https://www.facebook.com 这样的不同链接时(这不是我想在我的应用程序中测试的,只是故障排除)它是安全的,它可以在我上面的应用程序和 Rest Client DHC 中为我提供 200,即使使用旧的不记名 token 也是如此。

最佳答案

如果您尝试向 Web API 发出 CORS 请求,则需要将其配置为接受跨源请求。如果你不配置你的 web api 来接受跨源请求,它会在调用它时抛出这些类型的错误。请记住,对于 web api 访问,https://www.domain.sohttp://www.domain.so是完全不同的客户端。

查看此链接:

https://learn.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

关于c# - 为什么我在使用带有安全 URL 的 HttpResponseMessage 时得到 401 未经授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48980906/

相关文章:

asp.net-mvc - token 无效。使用 UserManager.ConfirmEmailAsync(user.Id, code) 验证电子邮件验证码时

c# - 使用 StreamWriter 追加文本

c# - 为什么 visual studio 不添加链式引用?

c# - 使用大括号格式化 C# 中的输出

c# - 如果 EnableOptimization 设置为 true,则 JS 包不会呈现

c# - 使用 MVC Controller 作为客户端和 Web API 之间的代理

c# - 从 DetailsView 中检索数据

javascript - 从下拉列表中发布 URL,没有 'submit' 按钮

c# - 无法从 aspx 页面中的代码访问变量

c# - 如何在 ASP.NET Web API 核心中全局启用 CORS