繁体   English   中英

IIS 网站使用本地主机,但不使用 IP 地址

[英]IIS website works with localhost, but not using an IP address

我有一个 Angular 前端和一个 .NET 框架后端,它有以下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 错误,但带来了不同的错误,signalr 也有一个错误,即 CORS origin 被设置了两次
  • 我还在设置中将网站https://IP添加到本地 intr.net
    • 在此之前,我得到了一个登录弹出窗口,这样做修复了它
  • 我对前端和后端的绑定都是 https,带有自签名证书
    • 浏览器通知,证书无效

我的猜测是我的 IIS 配置不正确,因为如果我使用localhost而不是 IP 地址,网站就可以正常工作。

您启用了 Windows 身份验证,因此当浏览器发送的 CORS 预检请求(匿名 OPTION 请求)到达 IIS 时,IIS 返回 401 并触发您看到的错误。

您将不得不使用 IIS CORS 模块来正确处理此类预检请求,

https://blogs.iis.net/iisteam/getting-started-with-the-iis-cors-module

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM