ramsai1973 Ответов: 1

Включить CORS для ASP.NET веб-api core 2.0


Я создал веб-API с помощью ASP.Net ядро 2.0 в котором я реализовал код для включения CORS как показано ниже:

// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy("AllowFromAll",
                    builder => builder
                    .WithMethods("GET", "POST")
                    .AllowAnyOrigin()
                    .AllowAnyHeader());
            }); ;

        
            services.AddMvc();
           
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseCors("AllowFromAll");
            app.UseMvc();
        }
    }
}


Когда я проверяю ответ, вызывая его через fiddler, я получаю http 401: несанкционированная ошибка.

Я не уверен, что пропустил какую-то реализацию для включения CORS.

Есть какие-нибудь предложения, пожалуйста?

Что я уже пробовал:

// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy("AllowFromAll",
                    builder => builder
                    .WithMethods("GET", "POST")
                    .AllowAnyOrigin()
                    .AllowAnyHeader());
            }); ;

        
            services.AddMvc();
           
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseCors("AllowFromAll");
            app.UseMvc();
        }
    }
}

ramsai1973

HTTP/1.1 401 несанкционированный
Кэш-контроля: индивидуальная
Content-Type: text/html; charset=utf-8
Сервер: Microsoft-IIS/10.0
WWW-аутентификация: переговоры
Веб-проверки подлинности: проверка подлинности NTLM
X-Powered-By: ASP.NET
Дата: СБ, 24 февраля 2018 05:42:50 GMT
Содержание-Длина: 5989
Прокси-Поддержка: Аутентификация На Основе Сеанса

<!Элемент DOCTYPE в HTML общественности "-//W3C для//определения DTD XHTML 1.0 строгий//ванной" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&ГТ;


<title>IIS 10.0 подробная ошибка - 401.2 - несанкционированный

&lt;!--
тело{маржа:0;шрифт-размер:.7em;купел-семья:Вердана,Ариал шрифт Helvetica,без засечек;}
код{margin:0;color:#006600;font-size:1.1 em;font-weight:bold;}
.config_source code{font-size:.8em;color:#000000;}
пре{маржа:0;шрифт-размер:1.4 ЭМ;перенос слов:брейк-слово;}
ul,ol{margin:10px 0 10px 5px;}
ул.во-первых,ол.первый{маржи-топ:5 пикселей;}
fieldset{padding:0 15px 10px 15px;word-break:break-all;}
.summary-container fieldset{padding-bottom:5px;margin-top:4px;}
legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;}
легенда{color:#333333;;margin:4px 0 8px -12px;_margin-top:0px;
шрифт-вес:жирный;размер шрифта:1эм;}
ответ:ссылка,: посетил{цвет:#007EFF;шрифт-вес:смелые;}
a:hover{text-decoration:none;}
h1{font-size:2.4 em;margin:0;color:#FFF;}
h2{font-size:1.7 em;margin:0;color:#CC0000;}
h3{font-size:1.4 em;margin:10px 0 0 0;color:#CC0000;}
h4{font-size:1.2 em;margin:10px 0 5px 0;
}#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS",Verdana,sans-serif;
цвет:#FFF;цвет фона:#5C87B2;
}#content{margin:0 0 0 2%;position:relative;}
.summary-container,.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
.content-container p{margin:0 0 10px 0;
}#details-left{width:35%;float:left;margin-right:2%;
}#details-right{width:63%;float:left;overflow:hidden;
}#server_version{width:96%;_height:1px;min-height:1px;margin:0 0 5px 0;padding:11px 2% 8px 2%;color:#FFFFFF;
фон-цвет:#5A7FA5;границы вниз:1px твердых #C1CFDD;границы-топ:1 пиксель твердых #4A6C8E;шрифт-вес:нормальный;
размер шрифта:1em;цвет:#FFF;выравнивание текста:справа;
}#server_version p{margin:5px 0;}
таблица{margin:4px 0 4px 0;width:100%;border:none;}
тд е{вертикального выравнивания:сверху;обивка:0 3 пикселей;текст-согласовать:слева;шрифт-вес:нормальный;границы:нет;}
th{width:30%;text-align:right;padding-right:2%;font-weight:bold;}
thead th{background-color:#ebebeb;width:25%;
}#details-right th{width:20%;}
стол тр.альт тд,таблица тр.АЛТ-й{}
.изюминка-код{цвет:#CC0000;шрифт-вес:жирный;стиль шрифта:курсив;}
.ясно{ясна:как;}
.предпочтительный{обивка:0 5 пикселей 2 пикселя 5 пикселей;шрифт-вес:нормальный;фон:#006633;цвет:#FFF;шрифт-размер:.8em;}
-->






Ошибка http 401.2 - несанкционированный доступ


Вы не имеете права просматривать эту страницу из-за недопустимых заголовков аутентификации.




Наиболее вероятные причины:


В IIS не выбран ни один протокол проверки подлинности (включая анонимный). Включена только интегрированная аутентификация, и был использован клиентский браузер, который не поддерживает интегрированную аутентификацию. Интегрированная аутентификация включена, и запрос был отправлен через прокси-сервер, который изменил заголовки аутентификации до того, как они достигли веб-сервера. Веб-сервер не настроен для анонимного доступа, и требуемый заголовок авторизации не был получен. В "настройка/система.раздел: Управление сайтом"/ "авторизация" может быть явно отрицая доступ пользователей.



Вещи, которые вы можете попробовать:


Проверьте параметры проверки подлинности для ресурса, а затем попробуйте запросить ресурс с помощью этого метода проверки подлинности. Убедитесь, что браузер клиента поддерживает встроенную проверку подлинности. Убедитесь, что запрос не проходит через прокси-сервер при использовании встроенной проверки подлинности. Убедитесь, что пользователю явно не отказано в доступе в разделе конфигурации "configuration/system.webServer/authorization". Создайте правило трассировки, чтобы отслеживать невыполненные запросы для этого кода состояния HTTP. Для получения дополнительной информации

Richard Deeming

"Вы не имеете права просматривать эту страницу из-за недопустимых заголовков аутентификации."

Похоже, это не имеет никакого отношения к вашим заголовкам CORS. Похоже, что ваш сайт настроен на отказ в анонимном доступе, и вы делаете анонимный запрос.

"В IIS не выбран ни один протокол аутентификации (включая анонимный). Включена только интегрированная аутентификация, и был использован клиентский браузер, который не поддерживает интегрированную аутентификацию."

RickZeeland

А когда вы попробуете с выключенным брандмауэром ?

1 Ответов

Рейтинг:
2

Dinesh Singh Kushwaha (Dev)

Привет друг обратитесь к этому url и я уверен что вы можете найти свой ответ если нет то просто дайте мне знать я это исправлю : Включение запросов перекрестного происхождения в ASP.NET Web API 2 | Microsoft Docs[^]

Шаг 1-

using System.Web.Http;
namespace WebService
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // New code
            config.EnableCors();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

Шаг 2-
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;

namespace WebService.Controllers
{
    [EnableCors(origins: "yourclientApplicationRootURL", headers: "*", methods: "*")]
    public class TestController : ApiController
    {
        // Controller methods not shown...
    }
}