我如何(简单地)在我的 Azure webrole 上启用 CORS API
How can I (simply) enable CORS on my Azure webrole API
我有一个 Azure webrole,它是 运行 一项 API 服务。我正在尝试启用 CORS,以便浏览器脚本可以使用 API。有很多问题涉及在 web-api 应用程序上启用 CORS,但我还没有找到可以为 webroles.
提供答案的问题
我试过将魔法 customheaders 块从 this answer 添加到我的 web.config,但这不起作用。
Microsoft 的 This document 暗示可以使用 Microsoft.AspNet.Cors nuget 包,但我不清楚如何获得 HttpConfiguration 来自 webrole OnStart 方法。我必须装饰我的每一个 API 方法,这似乎也很奇怪。没有一个 'switch' 我可以轻弹一下为整个服务启用 CORS 吗?
相关问题...
验证 CORS 是否实际启用的最简单方法是什么?目前,我正在使用 Blazor PostJsonAsync 调用并依赖它来传递,但反复重新配置角色并将其上传到 Azure 以尝试更改变得非常乏味。
更大的问题……我是在用 webrole 对抗潮流吗?许多文档都提到了 web-api 和 web-apps。也许这些是未来,而 webroles 已被弃用?
我还建议转向网络应用程序。但是,如果您使用 OWIN,您也可以让它与 Web 角色一起使用,并且在那里应用 cors 的方式也适用于 Web 应用程序。
您可以像这样在网络角色中托管您的 API:
这为您提供了您需要的 HttpConfiguration
(Startup.cs
)。
It also seems odd that I have to decorate every one of my API methods. Is there not a single 'switch' I can flick to enable CORS for the entire service?
您可以使用 ICorsPolicyProvider
在任何地方启用它:
// in startup.cs
config.EnableCors(new AllowAllCorsPolicyProvider());
public class AllowAllCorsPolicyProvider : ICorsPolicyProvider
{
readonly CorsPolicy _CorsPolicy;
public AllowAllCorsPolicyProvider()
{
_CorsPolicy = new CorsPolicy {AllowAnyHeader = true, AllowAnyMethod = true, AllowAnyOrigin = true};
}
public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return Task.FromResult(_CorsPolicy);
}
我有一个 Azure webrole,它是 运行 一项 API 服务。我正在尝试启用 CORS,以便浏览器脚本可以使用 API。有很多问题涉及在 web-api 应用程序上启用 CORS,但我还没有找到可以为 webroles.
提供答案的问题我试过将魔法 customheaders 块从 this answer 添加到我的 web.config,但这不起作用。
Microsoft 的This document 暗示可以使用 Microsoft.AspNet.Cors nuget 包,但我不清楚如何获得 HttpConfiguration 来自 webrole OnStart 方法。我必须装饰我的每一个 API 方法,这似乎也很奇怪。没有一个 'switch' 我可以轻弹一下为整个服务启用 CORS 吗?
相关问题...
验证 CORS 是否实际启用的最简单方法是什么?目前,我正在使用 Blazor PostJsonAsync 调用并依赖它来传递,但反复重新配置角色并将其上传到 Azure 以尝试更改变得非常乏味。
更大的问题……我是在用 webrole 对抗潮流吗?许多文档都提到了 web-api 和 web-apps。也许这些是未来,而 webroles 已被弃用?
我还建议转向网络应用程序。但是,如果您使用 OWIN,您也可以让它与 Web 角色一起使用,并且在那里应用 cors 的方式也适用于 Web 应用程序。
您可以像这样在网络角色中托管您的 API:
这为您提供了您需要的 HttpConfiguration
(Startup.cs
)。
It also seems odd that I have to decorate every one of my API methods. Is there not a single 'switch' I can flick to enable CORS for the entire service?
您可以使用 ICorsPolicyProvider
在任何地方启用它:
// in startup.cs
config.EnableCors(new AllowAllCorsPolicyProvider());
public class AllowAllCorsPolicyProvider : ICorsPolicyProvider
{
readonly CorsPolicy _CorsPolicy;
public AllowAllCorsPolicyProvider()
{
_CorsPolicy = new CorsPolicy {AllowAnyHeader = true, AllowAnyMethod = true, AllowAnyOrigin = true};
}
public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return Task.FromResult(_CorsPolicy);
}