对预检请求的响应未通过访问控制(Angular 2 - Web Api)

Posted

技术标签:

【中文标题】对预检请求的响应未通过访问控制(Angular 2 - Web Api)【英文标题】:Response to preflight request doesn't pass access control (Angular 2 - Web Api) 【发布时间】:2018-04-29 15:00:39 【问题描述】:

我有几个项目,其中一个是用于身份验证的。但是我设置了CORS 配置,它仍然返回错误。

注意:Web Api 应用可与邮递员配合使用。

这是我到目前为止所做的:

Startup.cs

[assembly: OwinStartup(typeof(LabelGenerator.Startup))]
namespace LabelGenerator 
    public partial class Startup 
        public void Configuration(IAppBuilder app) 
            ConfigOAuth(app);
            ConfigWebApi(app);
        
    

Startup.Auth.cs

namespace LabelGenerator 
    public partial class Startup 
        private void ConfigOAuth(IAppBuilder app) 
            OAuthBearerAuthenticationOptions oAuthServerOptions = new OAuthBearerAuthenticationOptions();
            // Token Generation
            app.UseOAuthBearerAuthentication(oAuthServerOptions);
        

        private void ConfigWebApi(IAppBuilder app) 
            HttpConfiguration conf = new HttpConfiguration();
            WebApiConfig.Register(conf);
            app.UseWebApi(conf);

            // CORS
            app.UseCors(CorsOptions.AllowAll);
        
    

Web.config

<modules runAllManagedModulesForAllRequests="true">
  <remove name="ApplicationInsightsWebTracking" />
  <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>

【问题讨论】:

【参考方案1】:

根据这个answer我改变了这个:

private void ConfigWebApi(IAppBuilder app) 
    HttpConfiguration conf = new HttpConfiguration();
    WebApiConfig.Register(conf);
    app.UseWebApi(conf);

    // CORS
    app.UseCors(CorsOptions.AllowAll);

到这里:

private void ConfigWebApi(IAppBuilder app) 
    HttpConfiguration conf = new HttpConfiguration();
    WebApiConfig.Register(conf);

    // CORS
    app.UseCors(CorsOptions.AllowAll);
    app.UseWebApi(conf);

现在CORS 工作正常。

【讨论】:

以上是关于对预检请求的响应未通过访问控制(Angular 2 - Web Api)的主要内容,如果未能解决你的问题,请参考以下文章

对预检请求的响应未通过访问控制检查 - Angular 5 + JWT OAuth

Angular 6 - 对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头

Angular 7:对预检请求的响应未通过访问控制检查:请求中不存在“Access-Control-Allow-Origin”标头

Angular2对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头

CORS 策略:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态

对预检请求的响应未通过访问控制检查:响应中“Access-Control-Allow-Credentials”标头的值为“”