0

我们启动网站,访问 IP 地址,登录,一切正常。如果你然后使用域名访问该站点,授权有效,但是在向服务器发送get / post请求时出现错误:“加载资源失败:服务器响应状态为401(未授权)

请注意,两种情况下的授权都是成功的。HttpClient 发送请求时发生错误。

如果服务器具有多个具有不同网络(例如本地和工作)的网络接口,则会出现同样的问题。该站点仅适用于一个网络。

该项目是基于标准模板创建的:Blazor WebAssembly 应用程序(核心托管)和身份服务器。 在此处输入图像描述

在文件 appsettings.json 中配置 Kestrel

{
  ...
  "IdentityServer": {
    "Clients": {
      "BlazorAppCore5.Client": {
        "Profile": "IdentityServerSPA"
      }
    },
    "Key": {
      "Type": "Development"
    }
  },
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "https://*:5001"
      }
    }
  },
  "AllowedHosts": "*"
}

我们发布项目并运行。

在此处输入图像描述

我们通过计算机名访问该站点并登录:“https://desktop-9thm5hg:5001/”

在此处输入图像描述

作品!现在我们转到 127.0.0.1 或 localhost:“https://127.0.0.1:5001/”

在此处输入图像描述

授权工作,“主页”和“柜台”页面正在工作。他们不使用 HttpClient。

现在转到页面 fetchdata。

在此处输入图像描述

注意力!如果您重新启动站点并首次访问“https://127.0.0.1:5001/”,它将无法在“https://desktop-9thm5hg:5001/”上运行。

检查 ASP.NET Core 3.1、5.0 版

4

1 回答 1

0

您的目标应该是为您的 identityServer 设置一个域名,供所有客户端和 API 使用。此外,在任何地方都使用 HTTPS 是最佳实践,对于 HTTPS,您需要证书和域。

发行者也是令牌的一部分,当发行者的名称(IP或域更改)时,令牌验证会出现问题

于 2020-12-17T15:07:29.273 回答