本文介绍如何在一个域中运行的容器应用中启用和配置 CORS,以便从不同域中的服务器访问资源。 默认情况下,作为一种安全措施,浏览器会阻止此类跨源请求。 如果需要允许托管在不同域上的客户端应用程序访问容器应用,可以将 CORS 配置为显式允许这些请求。
启用 CORS 时,可以配置以下设置:
设置 | 说明 |
---|---|
允许凭据 | 指示是否返回 Access-Control-Allow-Credentials 标头。 |
最长时间 | 配置 Access-Control-Max-Age 响应标头,以指示 CORS 预检请求的结果可以缓存多长时间(以秒为单位)。 |
允许的域 | 允许跨源请求的源列表(例如 https://www.contoso.com )。 控制 Access-Control-Allow-Origin 响应标头。 使用 * 允许所有内容。 |
允许的方法 | 跨源请求中允许的 HTTP 请求方法列表。 控制 Access-Control-Allow-Methods 响应标头。 使用 * 允许所有内容。 |
允许的标题 | 跨源请求中允许的标头列表。 控制 Access-Control-Allow-Headers 响应标头。 使用 * 允许所有内容。 |
公开标头 | 默认情况下,并非所有响应标头都会在跨源请求中向客户端 JavaScript 代码公开。 公开的标头是服务器可以在响应中包括的额外标头。 控制 Access-Control-Expose-Headers 响应标头。 使用 * 公开所有内容。 |
属性 | 说明 | 类型 |
---|---|---|
allowCredentials |
指示是否返回 Access-Control-Allow-Credentials 标头。 |
布尔 |
maxAge |
配置 Access-Control-Max-Age 响应标头,以指示 CORS 预检请求的结果可以缓存多长时间(以秒为单位)。 |
整数 |
allowedOrigins |
允许跨源请求的源列表(例如 https://www.contoso.com )。 控制 Access-Control-Allow-Origin 响应标头。 使用 * 允许所有内容。 |
字符串数组 |
allowedMethods |
跨源请求中允许的 HTTP 请求方法列表。 控制 Access-Control-Allow-Methods 响应标头。 使用 * 允许所有内容。 |
字符串数组 |
allowedHeaders |
跨源请求中允许的标头列表。 控制 Access-Control-Allow-Headers 响应标头。 使用 * 允许所有内容。 |
字符串数组 |
exposeHeaders |
默认情况下,并非所有响应标头都会在跨源请求中向客户端 JavaScript 代码公开。 公开的标头是服务器可以在响应中包括的额外标头。 控制 Access-Control-Expose-Headers 响应标头。 使用 * 公开所有内容。 |
字符串数组 |
有关详细信息,请参阅有关来自提取请求的有效 HTTP 响应的 Web 超文本应用程序技术工作组 (WHATWG) 参考。
启用和配置 CORS
在 Azure 门户中转到你的容器应用。
从“设置”菜单中的“网络”下,选择“ CORS”。
启用 CORS 后,可以为“允许的源”、“允许的方法”、“允许的标头”和“公开标头”添加、编辑和删除值。
若要允许方法、标头或源的任何可接受值,请输入 *
作为值。
注意
通过命令行更新配置设置会覆盖当前设置。 请确保将当前设置合并到要设置的任何新 CORS 值中,以确保配置保持一致。
以下代码表示配置容器应用时 CORS 设置在 ARM 模板中采用的形式。
{
...
"properties": {
...
"configuration": {
...
"ingress": {
...
"corsPolicy": {
"allowCredentials": true,
"maxAge": 5000,
"allowedOrigins": ["https://example.com"],
"allowedMethods": ["GET","POST"],
"allowedHeaders": [],
"exposeHeaders": []
}
}
}
}
}