Есть анонимный сервис с post и с другого локалхоста не получается достучаться без OPTIONS ендпоинта который заполнит нужные хедеры. Если уже делать этот OPTIONS эндпоинт, то хотелось бы не для каждого уровня с UriTemplate = "/{s}", а что-то типа UriTemplate = "*", но с "*" - не работает.



Вопрос как сделать что-бы матчило по всем входящим юрлам любой вложености(/) или как сделать что бы CORS не вываливался по другому. 



Сейчас для каждого уровня пишется костыль типа:

 

        [OperationContract]

        [WebInvoke(Method = "OPTIONS", UriTemplate = "/{s}")]

        public void GetOptions(string s) {

            var outgoingResponseHeaders = HttpContextAccessor.GetInstance().Response.Headers;

            outgoingResponseHeaders["Access-Control-Allow-Origin"] = "*";

            outgoingResponseHeaders["Access-Control-Allow-Methods"] = "GET, POST, OPTIONS";

            outgoingResponseHeaders["Access-Control-Allow-Headers"] = "Origin, Content-Type, Accept, X-Requested-With, X-Requested-With, x-request-source";

            outgoingResponseHeaders["Access-Control-Request-Headers"] = "X-Requested-With, x-request-source, accept, content-type";

        }

Делалось по гайду тут, но не сработало так как надо. 

 

Нравится

2 комментария

Если есть такой вариант, то можно отключить проверку CORS, а именно:

 

1) В Web.config лоадера (внешний Web.config) заменить <add origin="*" allowed="false"/> на <add origin="*" allowed="true"/> 

2) В web.config лоадера заменить <cors enabled="true"> на <cors enabled="false">

 

После этого можно попробовать выполнить запрос еще раз.

Oleg Drobina,

спасибо, но у меня .net core.

Показать все комментарии