CORS не работает в ASP. NET основном проекте веб-API - PullRequest
0 голосов
/ 12 июля 2020

Я создал базовый веб-API ASP. NET (net ядро ​​3.1) и пытаюсь включить CORS, но, похоже, он не работает.

Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("AllowMyOrigin",
        builder =>
        {
            builder.SetIsOriginAllowed(t => true)
            .AllowCredentials();
        });
    });
    ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    //app.UseHttpsRedirection();


    app.UseRouting();

    app.UseCors("AllowMyOrigin");

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
    app.UseHttpsRedirection();
}

Контроллер:

[Route("api/[controller]")] 
[ApiController]
public class airdata_updateController : ControllerBase
{
    [EnableCors("AllowMyOrigin")]
    [HttpGet]
    public string test()
    {
        return "ok";
    }

    ...
}

Я использую Postman, тестирую свой API на локальном компьютере, и он работает хорошо: локальный компьютер

Но я использую Postman на другом компьютере в той же локальной сети для вызова моего API, это не удалось: другой компьютер

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

возможно, этот вариант вам поможет.

services.AddCors(options =>
            {
                options.AddPolicy("AllowMyOrigin",
                    builder => builder
                        .AllowAnyMethod()
                        .AllowAnyHeader()
                        .AllowAnyOrigin()

                );
            });
0 голосов
/ 12 июля 2020

Попробуйте следующее:

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        
         services.AddCors();

        ...
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
       ...
       
        app.UseCors(
            options => options.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()
        );

       ...
    }

Вам не понадобятся декораторы в методах вашего контроллера, указанная политика CORS (AllowAnyOrigin, AllowAnyHeader, AllowAnyMethod) применяется ко всем из них. Чтобы настроить политику, отметьте https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...