Включить Cors .Net Core - PullRequest
       15

Включить Cors .Net Core

0 голосов
/ 03 июня 2019

В C # с использованием WebApi2 я определил следующую конечную точку, используя WebApi2:

[EnableCors("*", "*", "Post", SupportsCredentials = true)]
[HttpPost]
[Route("myRouting")]
public HttpResponseMessage MyEndPoint()
{
    //...some code
}

и работает, вызывая его с:

var request = new XMLHttpRequest();
request.open('POST', url, true);
request.withCredentials = true;
request.send();

Попытка обновить его до F # .Net Core без успеха:

let webApp =
    choose [
        route "/" >=> text "Description"
        POST >=> routef "myRouting" myEndPoint ]

let configureCors (builder : CorsPolicyBuilder) =
    builder.AllowAnyOrigin()
           .AllowAnyHeader()
           .WithMethods("POST")
           .AllowCredentials()
           |> ignore

let configureApp (app : IApplicationBuilder) =
    app.UseCors(configureCors)
       .UseGiraffe webApp

let configureServices (services : IServiceCollection) =
    services.AddCors()
            .AddGiraffe() |> ignore

Получение ошибки Значение заголовка «Access-Control-Allow-Origin» в ответе не должно быть подстановочным знаком «», если режим учетных данных запроса «include». *

Я знаю о Указание AllowAnyOrigin и AllowCredentials является небезопасной конфигурацией и может привести к подделке межсайтовых запросов. Служба CORS возвращает неверный ответ CORS, когда приложение настроено с использованием обоих методов.

Почему он работает с WebApi2 и есть ли способ заставить его работать без указания источника?

1 Ответ

0 голосов
/ 03 июня 2019

Я думаю, что вам нужно добавить политику при использовании метода services.AddCors в функции configureServices. Вот эквивалентный пример использования вашей конфигурации, адаптированной из работающего F # .NET Core Web API, который я использую в работе:

let configureServices (services : IServiceCollection) =
    services.AddCors(fun options -> 
            options.AddPolicy("AllowAll", fun builder -> 
                 builder.AllowAnyHeader()
                        .AllowAnyOrigin()
                        .WithMethods("POST")
                        .AllowCredentials() |> ignore))
            .AddGiraffe()
            |> ignore
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...