使用 CORS 的应用程序在 Azure 中不起作用
Posted
技术标签:
【中文标题】使用 CORS 的应用程序在 Azure 中不起作用【英文标题】:Application using CORS does not work in Azure 【发布时间】:2016-05-27 17:47:04 【问题描述】:我已将我的应用程序配置为使用 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<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request)
return Task.FromResult(_policy);
public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken)
return Task.FromResult(_policy);
最后是 web.config
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="WebDav" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
为什么上述方法在 Azure 环境中不起作用?
【问题讨论】:
【参考方案1】:我必须在 Azure 门户上为我的应用服务启用 CORS
【讨论】:
【参考方案2】:从最近开始,Azure API 应用程序(现在已过时并被统一到应用程序服务中)不遵守您的代码定义的 CORS 标头。部署到新的应用服务实例。
【讨论】:
将它部署到一个新的应用服务并且它工作了!谢谢!以上是关于使用 CORS 的应用程序在 Azure 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章