Отсутствует метод в EnableCorsAttribute - PullRequest
0 голосов
/ 27 июня 2018

Я хочу включить CORS из моего контроллера в приложение asp.net core 2, поэтому в контроллер я добавляю атрибут вроде:

[EnableCors(origins: "*", headers: "accept,content-type,origin,x-my-header", methods: "*")]

Но я получаю сообщение об ошибке:

Наилучшая перегрузка для 'EnableCorsAttribute' не имеет параметра названный «происхождение»

Итак, я обращаюсь к EnableCorsAttribute из метаданных и обнаружил следующие методы:

namespace Microsoft.AspNetCore.Cors
{

    public class EnableCorsAttribute : Attribute, IEnableCorsAttribute
    {
        public EnableCorsAttribute(string policyName);

        public string PolicyName { get; set; }
    }
}

Но, возможно, это будет такой метод:

public EnableCorsAttribute(string origins, string headers, string methods);

Почему у меня его нет? Мне нужно что-то установить? Я новичок в Asp.Net Core, и я не понимаю, почему этот метод не в моем API. Привет

1 Ответ

0 голосов
/ 27 июня 2018

Нет такого атрибута, как EnableCorsAttribute(string origins, string headers, string methods) в пакете Microsoft.AspNetCore.Cors.

В вашем сценарии и на основе Включить запросы кросс-источника (CORS) в ASP.NET Core :
Если указанная конфигурация cors предназначена для всего приложения, то в Ваш ConfigureServices метод добавьте cors services:

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

, а затем глобальное промежуточное ПО cors в методе Configure:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseCors(builder => builder
        .WithOrigins("https://my.web.com", "http://localhost:5001")
        .AllowAnyMethod()
        .AllowCredentials()
        .WithHeaders("Accept", "Content-Type", "Origin", "X-My-Header"));

    //code omitted
}

Замените ("https://my.web.com", "http://localhost:5001") на свое происхождение.
В случае, если вы хотите иметь более одной конфигурации cors, используйте метод ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options =>
    {
        options.AddPolicy("MyCorsPolicy", builder => builder
            .WithOrigins("https://my.web.com", "http://localhost:5001")
            .AllowAnyMethod()
            .AllowCredentials()
            .WithHeaders("Accept", "Content-Type", "Origin", "X-My-Header"));
    });
}

в Configure метод:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseCors("MyCorsPolicy");

    //code omitted
}

и, наконец, в контроллере:

[EnableCors("MyCorsPolicy")]
public class MyController : Controller
{ ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...