对预检请求的响应未通过访问控制(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”标头的值为“”