Как работать с заголовком OPTION в web-интерфейсе dot net core - PullRequest
0 голосов
/ 26 ноября 2018

При тестировании моего веб-API с ядром dot net с помощью вызова ajax chrome заменяет мой get на Option в заголовке запроса, когда я слежу за фидлером.Я следовал приведенному здесь коду Включить заголовок OPTIONS для CORS в .NET Core Web API и все еще не работает.Как мне этого добиться?Вот мой стартовый файл

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?}");
    });
}

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Если вы размещаете на IIS, одна из возможных причин этого заключается в том, что IIS блокирует OPTIONS глагол.

Одно контрольное указание: вы получаете 404 ошибку во время OPTIONS запроса.

Чтобы это исправить, нужно явно указать IIS , а не , чтобы заблокировать OPTIONS запрос.

Перейти к фильтрации запросов:

IIS Request Filtering

Убедитесь, что ОПЦИИ допускаются:

Make sure OPTIONS is True

Или просто создайте web.config со следующей настройкой:

<system.webServer>
    <security>
        <requestFiltering>
            <verbs>
                <remove verb="OPTIONS" />
                <add verb="OPTIONS" allowed="true" />
            </verbs>
        </requestFiltering>
    </security>
</system.webServer>
0 голосов
/ 26 ноября 2018

Это должно включить OPTION header

          app.UseCors(builder => builder.WithOrigins("http://example.com")
          .AllowAnyHeader()
          .AllowAnyMethod()
          .AllowCredentials());

в соответствии с вашими потребностями, если вы не хотите включать какой-либо заголовок / метод или учетные данные.

...