使用CORS的应用程序在Azure中不起作用
我已将我的应用程序配置为使用CORS。 一切都在我的本地环境中完美运行,但在将应用程序部署到Azure后,我们收到以下错误:
请求的资源上不存在“Access-Control-Allow-Origin”标头。
当我在我的计算机上运行应用程序并使用DHC chrome扩展创建原始标头时,它确实有效:
Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: http://mysite.s3-website-eu-west-1.amazonaws.com Access-Control-Expose-Headers: Location,Finished
这是我使用的代码/配置:
的Global.asax.cs
protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); }
WebApiConfig.cs
public static void Register(HttpConfiguration config) { config.EnableCors(new MyCorsPolicyAttribute()); config.MapHttpAttributeRoutes(); }
MyCorsPolicyAttribute.cs
public class MyCorsPolicyAttribute : Attribute, ICorsPolicyProvider { private CorsPolicy _policy; public MyCorsPolicyAttribute() { _policy = new CorsPolicy { AllowAnyMethod = true, AllowAnyHeader = true, SupportsCredentials = true }; _policy.ExposedHeaders.Add("Location"); _policy.ExposedHeaders.Add("Finished"); // Add allowed origins. _policy.Origins.Add("http://mysite.s3-website-eu-west-1.amazonaws.com"); _policy.Origins.Add("http://localhost:81");//for testing purposes; } public Task GetCorsPolicyAsync(HttpRequestMessage request) { return Task.FromResult(_policy); } public Task GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken) { return Task.FromResult(_policy); } }
最后是web.config
为什么上述工作在Azure环境中不起作用?
由于最近Azure API应用程序(现已过时并统一到App Services中)不遵守代码定义的CORS标头。 部署到新的App Services实例。
我必须在Azure门户上启用CORS到我的App Service