Chrome 87 在针对 Windows IIS 10 的 CORS 中的 Windows 身份验证失败

作者:编程家 分类: 编程代码 时间:2025-10-06

Chrome 87 中的 Windows 身份验证失败导致的 CORS 问题

最近,一些用户报告称在使用 Chrome 87 浏览器访问 Windows IIS 10 服务器时遇到了 CORS(跨源资源共享)问题。具体而言,这个问题涉及到了 Windows 身份验证失败,导致了跨域请求被拒绝的情况。本文将详细介绍该问题,并提供一个案例代码来演示这个问题。

问题描述:

当用户使用 Chrome 87 浏览器访问运行 Windows IIS 10 服务器的网站时,如果该网站启用了 Windows 身份验证,并且在服务器端配置了跨域请求(CORS),那么用户将会遇到一个错误。具体错误信息是:'Access-Control-Allow-Origin' header is present on the requested resource,即请求的资源上出现了 'Access-Control-Allow-Origin' 头部。这个错误表明了跨域请求被服务器拒绝了。

问题分析:

这个问题的根本原因在于 Chrome 87 中的一个安全更新。为了提高安全性,Chrome 87 做了一些改变,其中之一是强制要求服务器在返回 'Access-Control-Allow-Origin' 头部时必须包含请求域的完整地址,而不能使用通配符 '*'。然而,由于 Windows 身份验证的机制,服务器在返回响应时无法获取到完整的请求域,导致了这个问题的出现。

案例代码:

以下是一个简单的案例代码,用于演示这个问题:

html

CORS 示例

解决方案:

为了解决这个问题,我们可以采取以下几个步骤:

1. 在服务器端配置 'Access-Control-Allow-Origin' 头部,将请求域的完整地址添加到该头部中。例如,如果请求域为 https://example.com,那么可以将头部设置为:'Access-Control-Allow-Origin: https://example.com'。

2. 在服务器端配置 'Access-Control-Allow-Credentials' 头部,将其设置为 true,以允许跨域请求携带身份验证凭据。

3. 在服务器端配置 'Access-Control-Allow-Methods' 头部,将其设置为允许的请求方法,例如 GET、POST 等。

4. 在服务器端配置 'Access-Control-Allow-Headers' 头部,将其设置为允许的请求头部,例如 Content-Type、Authorization 等。

5. 在服务器端配置 'Access-Control-Expose-Headers' 头部,将其设置为需要暴露给客户端的头部,例如自定义头部等。

中间段落:解决 CORS 问题的关键步骤

解决这个问题的关键步骤如下所示:

1. 配置 'Access-Control-Allow-Origin' 头部:

Access-Control-Allow-Origin: https://example.com

2. 配置 'Access-Control-Allow-Credentials' 头部:

Access-Control-Allow-Credentials: true

3. 配置 'Access-Control-Allow-Methods' 头部:

Access-Control-Allow-Methods: GET, POST

4. 配置 'Access-Control-Allow-Headers' 头部:

Access-Control-Allow-Headers: Content-Type, Authorization

5. 配置 'Access-Control-Expose-Headers' 头部:

Access-Control-Expose-Headers: X-Custom-Header

这些步骤可以确保服务器正确处理跨域请求,解决 Windows 身份验证失败导致的 CORS 问题。

在使用 Chrome 87 浏览器访问 Windows IIS 10 服务器时,由于 Windows 身份验证失败,可能会遇到 CORS 问题。本文介绍了该问题的原因和解决方案,并提供了一个案例代码来演示这个问题。通过正确配置服务器的跨域请求头部,可以解决这个问题。希望本文能对遇到类似问题的开发者有所帮助。