C# 如何处理dotnetcorewebapi中的选项头
在使用ajax调用测试我的dot net core web api时,当我使用fiddler进行监视时,chrome会用请求头中的选项替换我的get。我遵守了这里的代码,但仍然没有工作。我如何做到这一点?这是我的启动文件C# 如何处理dotnetcorewebapi中的选项头,c#,.net-core,asp.net-core-webapi,C#,.net Core,Asp.net Core Webapi,在使用ajax调用测试我的dot net core web api时,当我使用fiddler进行监视时,chrome会用请求头中的选项替换我的get。我遵守了这里的代码,但仍然没有工作。我如何做到这一点?这是我的启动文件 public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => {
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
});
services.AddCors(options => options.AddPolicy("AllowCors", p =>
p.AllowAnyOrigin().AllowAnyMethod().AllowCredentials().AllowAnyHeader()));
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseOptions();
app.UseCors("AllowCors");
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseHttpsRedirection();
app.UseMvc(routes =>
{
routes.MapRoute(name: "default", template: "{controller=Account}/{action=Login}/{id?}");
});
}
public void配置服务(IServiceCollection服务)
{
配置(选项=>
{
options.checkApprovered=context=>true;
options.MinimumSameSitePolicy=Microsoft.AspNetCore.Http.SameSiteMode.None;
});
services.AddCors(options=>options.AddPolicy(“AllowCors”,p=>
p、 AllowAnyOrigin().AllowAnyMethod().AllowCredentials().AllowAnyHeader());
配置(选项=>
{
options.ForwardClientCertificate=false;
});
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
公共void配置(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Home/Error”);
app.UseHsts();
}
app.UseOptions();
应用程序UseCors(“AllowCors”);
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseHttpsRedirection();
app.UseMvc(路由=>
{
MapRoute(名称:“默认”,模板:“{controller=Account}/{action=Login}/{id?}”);
});
}
这应该启用选项标题
app.UseCors(builder => builder.WithOrigins("http://example.com")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials());
如果您不想启用任何标题/方法或凭据,请根据您的需要调整它。这应该启用选项标题
app.UseCors(builder => builder.WithOrigins("http://example.com")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials());
如果您不想启用任何头/方法或凭据,请根据您的需要使用它。如果您在IIS上托管,一个可能的原因是您收到了此消息,因为IIS正在阻止
选项
一个指示灯指示您在选项
请求期间收到404
错误
要解决此问题,您需要明确告诉IIS不阻止选项
请求
转到请求筛选:
<system.webServer>
<security>
<requestFiltering>
<verbs>
<remove verb="OPTIONS" />
<add verb="OPTIONS" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
确保允许选项:
<system.webServer>
<security>
<requestFiltering>
<verbs>
<remove verb="OPTIONS" />
<add verb="OPTIONS" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
或者,只需使用以下设置创建一个web.config
:
<system.webServer>
<security>
<requestFiltering>
<verbs>
<remove verb="OPTIONS" />
<add verb="OPTIONS" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
如果您在IIS上托管,一个可能的原因是您得到了这一消息,因为IIS正在阻止选项
一个指示灯指示您在选项
请求期间收到404
错误
要解决此问题,您需要明确告诉IIS不阻止选项
请求
转到请求筛选:
<system.webServer>
<security>
<requestFiltering>
<verbs>
<remove verb="OPTIONS" />
<add verb="OPTIONS" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
确保允许选项:
<system.webServer>
<security>
<requestFiltering>
<verbs>
<remove verb="OPTIONS" />
<add verb="OPTIONS" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
或者,只需使用以下设置创建一个web.config
:
<system.webServer>
<security>
<requestFiltering>
<verbs>
<remove verb="OPTIONS" />
<add verb="OPTIONS" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
您是否添加了解决方案中说明的中间件类?您是否已将AllowCors
策略添加到相关控制器?我添加了中间件类,并将其包含在启动中。cs\I在相关控制器上添加了AllowCors,您所说的“不工作”是什么意思?你犯了什么错误?您是否也在IIS中托管该类?您是否添加了解决方案中解释的中间件类?您是否已将AllowCors
策略添加到相关控制器?我添加了中间件类,并将其包含在启动中。cs\I在相关控制器上添加了AllowCors。您所说的“不工作”是什么意思?你犯了什么错误?您是否也在IIS中托管此API?目前,该API未在IIS上发布。一切仍在visual studio中…现在我仍在本地测试而不发布,是否可以添加配置文件?@Mcbaloo这没有意义,您不需要在localhost上设置CORS。那么,我如何使用web应用程序测试Api而不在IIS上部署它呢。Api和web应用程序目前在一起,Api未在IIS上发布。一切仍在visual studio中…现在我仍在本地测试而不发布,是否可以添加配置文件?@Mcbaloo这没有意义,您不需要在localhost上设置CORS。那么,我如何使用web应用程序测试Api而不在IIS上部署它呢。Api和web应用程序结合在一起