我在 Azure 应用服务中发布了一个 api,它使用一些自定义标头。当我部署应用程序并尝试配置 CORS 时,没有选项可以设置允许的标头。另外,微软文档中似乎没有提到这件事。谁能告诉我我们是否可以为 Azure 应用服务设置允许的标头?
所有试验都以失败告终。
Azure 应用服务允许为 Web 应用程序配置 CORS,但它不提供在 Azure 门户 UI 中设置
Allowed Headers
的直接选项。
为了在后端处理CORS,我们可以根据框架以编程方式设置允许的标头。
下面是
Asp.net core
的示例,我在Program.cs文件中设置了Cors。
程序.cs:
builder.Services.AddCors(options =>
{
options.AddPolicy("CustomCorsPolicy", policy =>
{
policy.WithOrigins("https://FrontendAppURL")
.AllowAnyMethod()
.AllowAnyHeader()
.WithHeaders("X-Custom-Header", "Content-Type");
});
});
app.UseCors("AllowCustomHeaders");
对于
.Net Framework
,我使用 web.config
文件来设置 Azure Web 应用服务中的 Cors。
我将
web.config
文件添加到 Web Api 的根目录中。
web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type, X-Custom-Header" />
<add name="Cache-Control" value="public, max-age=3600" />
<add name="X-Custom-Header" value="MyCustomHeaderValue" />
</customHeaders>
</httpProtocol>
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
<defaultDocument>
<files>
<clear />
<add value="index.html" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
输出:
欲了解更多详情,请参阅Ms Doc。