Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理dotnetcorewebapi中的选项头_C#_.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 如何处理dotnetcorewebapi中的选项头

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 => {

在使用ajax调用测试我的dot net core web api时,当我使用fiddler进行监视时,chrome会用请求头中的选项替换我的get。我遵守了这里的代码,但仍然没有工作。我如何做到这一点?这是我的启动文件

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应用程序结合在一起