【发布时间】:2023-02-04 01:22:04
【问题描述】:
我有一个带有 .NET 框架后端的 Angular 前端,它具有以下 web.config 文件(没有其他关于授权/身份验证的信息):
<location path="Tokens">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
我正在使用 AD 登录,这是 Tokens 控制器,其余部分由 JWT 令牌保护。
我目前的问题是,我希望使用 IIS 与域中的其他计算机一起测试该网站,如果我使用 localhost,该网站可以正常工作,但是一旦我使用我的 IP,错误就会开始出现。
我的前端配置 JSON:
{
...
"apiAddress": "https://IP:50505/",
...
}
后端web.config 也包含这个:
<add key="WhitelistedServerUrls" value="https://IP:34622" />
因此,如果配置文件中的 IP 是 localhost,那么一切都会正常运行,但如果我将其换成我的实际 IP,则会出现 CORS 错误,如下图所示:
如果我使用本地主机,这些错误都不会出现。以下是我尝试过的事情的列表:
- CORS 应该在代码中正确设置,但为了确保,我还在 IIS 的
HTTP Response Headers功能中配置了它- 这修复了 CORS 错误,但带来了不同的错误,信号器也有一个错误,即 CORS 来源被设置了两次
- 我还在设置中将网站
https://IP添加到本地 Intranet- 在此之前,我收到一个登录弹出窗口,这样做修复了它
- 我对前端和后端的绑定都是带有自签名证书的 https
- 浏览器通知,证书无效
我的猜测是我的 IIS 配置不正确,因为如果我使用 localhost 而不是 IP 地址,网站就可以正常工作。
【问题讨论】:
-
在后端,您是否将真实IP地址添加到cors配置中?
builder.Services.AddCors(o => o.AddPolicy("AllowAll", build => { build .WithOrigins("actual IP adress").AllowCredentials(); })); -
@B_Cbk 这是我的 CORS 配置:
var cors = new EnableCorsAttribute(SystemConfiguration.GetValueFromConfigSection("Authorization", "WhitelistedServerUrls"), "*", "*") { SupportsCredentials = true}; config.EnableCors(cors);它从 web.config 文件中读取实际 IP -
你有这个定义吗<系统.web服务器>在您的网络配置文件中标记?您的 Cors 配置看起来正确。
<httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> -
您确定可以读取 web.config 文件中的 ip 地址吗?
-
@B_Cbk 我没有,它应该没有那个或没有?因为我在代码中配置了 CORS。
标签: c# .net angular iis active-directory