IIS CORS 模块配置
一、CORS 配置
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <cors enabled="true" failUnlistedOrigins="true"> <add origin="*" /> <add origin="https://*.microsoft.com" allowCredentials="true" maxAge="120"> <allowHeaders allowAllRequestedHeaders="true"> <add header="header1" /> <add header="header2" /> </allowHeaders> <allowMethods> <add method="DELETE" /> </allowMethods> <exposeHeaders> <add header="header1" /> <add header="header2" /> </exposeHeaders> </add> <add origin="http://*" allowed="false" /> </cors> </system.webServer> </configuration>
使用 IIS CORS 模块,可以:
- 为整个 IIS 服务器或特定 IIS 站点、应用程序、虚拟目录、物理目录或 system.webServer/cors) (文件启用、禁用 CORS。
- 将所有源主机域配置为使用 * 源主机规则接受。
- 配置特定源主机域的列表,并仅允许与列出的源主机域之一具有相同的源请求标头值的 CORS 请求。
- 配置源域列表时配置野生卡源主机域,例如
http://*
或https://*.mydomain.com
。 - 配置应禁止作为 CORS 请求的源域列表。
- 使用配置的值自定义 CORS 响应标头值。
二、CORS 配置说明
cors 元素的属性
Attribute | 说明 |
---|---|
enabled |
可选布尔属性。 指定是否启用 CORS。 默认值为 false 。 |
failUnlistedOrigins |
可选布尔属性。 指定如果请求的源与配置的源列表不匹配,或者源主机配置为不允许,是否要使用 403 设置 CORS 响应状态代码。 默认值为 false 。 |
添加源规则 <添加>
源规则
集合 <add>
的 <cors>
元素指定要添加到源规则列表的单个原点。
源规则的属性
Attribute | 说明 |
---|---|
origin |
必需的字符串属性。 指定要对其施加源规则的源主机。 可以使用星号 (*) 将此规则应用于所有源请求标头值。 还可以使用星号 (*) 作为子子域名称的通配符。 如果有多个源规则,则无论允许的属性值如何,它都会应用于最具体的源主机名规则。 |
allowed |
可选布尔属性。 指定是否接受源主机的 CORS 请求。 默认值为 true 。 |
allowCredentials |
可选布尔属性。 指定是否设置 Access-Control-Allow-Credentials: true CORS 响应标头。 此属性应仅用于特定源主机名,而不是 * 源主机,以符合 CORS 协议。默认值为 false 。 |
maxAge |
可选的整数属性。 持续时间(以秒为单位)。 指定预检 CORS 请求的响应标头的值 Access-Control-Max-Age 。 应仅为 CORS 预检请求设置 Access-Control-Max-Age 响应标头。 如果不想在 CORS 响应中设置 Access-Control-Max-Age 标头,请为此属性设置 -1。默认值为 -1 。 |
仅使用 * 源主机规则
如果只有 * 源主机规则,则 IIS CORS 模块与存在特定源主机名规则时的行为不同。 如果只有 * 源主机规则,IIS CORS 模块将执行以下操作:
- 无论客户端 CORS 组件发送的请求标头的值如何,Access-Control-Allow-Origin 响应标头的值
origin
都设置为 *。 - Vary:
origin
未添加响应标头,因为 IIS CORS 不会生成除 * 以外的 Access-Control-Allow-Origin 响应标头值,并且无需使用 Vary:origin
响应标头值。
更多: