Во время удара из Почтальона я могу получить доступ к данным без авторизации, но почему бы не с помощью приложения Angular 2 - PullRequest
0 голосов
/ 06 сентября 2018

Я использую ASP.Net Web API. Когда я выбираю отсутствие аутентификации при создании проекта веб-API, работает тот же код, но когда я использую индивидуальную аутентификацию, она выдает ошибку 401 даже после попытки всех возможных приемов. Пожалуйста, помогите мне обработать различные режимы аутентификации, доступные в ASP. Создание сетевого проекта. Я не нашел подходящего документа по индивидуальной аутентификации даже на MSDN. Также предложите мне рекомендуемый способ отправки токена или учетных данных в веб-API.

Ниже приведен код службы Angular 2. getOneItemDetailsCallClient работает, но getOneItemDetailsCall выбрасывает 401

getOneItemDetailsCall():Observable<any>{
return this.http.get('http://localhost:56265/api/ProductDetail').map((response:Response)=>response.json());
}



getOneItemDetailsCallClient():Observable<any[]>{
    return this.http.get('https://my-json-server.typicode.com/typicode/demo/posts').map((response:Response)=><OneItemComponent[]>response.json());
  }

Сведения об ошибке:

Request URL: http://localhost:56265/api/ProductDetail
Request Method: GET
Status Code: 401 Unauthorized
Remote Address: [::1]:56265
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Headers: GET,POST,PUT,DELETE,OPTIONS
Access-Control-Allow-Methods: true
Access-Control-Allow-Origin: *
Cache-Control: private
Content-Length: 6161
Content-Type: text/html; charset=utf-8
Date: Thu, 06 Sep 2018 18:04:04 GMT
Server: Microsoft-IIS/10.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
X-Powered-By: ASP.NET
X-SourceFiles: =?UTF-8?B?YzpcdXNlcnNcdmlwdWxzaW5naFxkb2N1bWVudHNcdmlzdWFsIHN0dWRpbyAyMDE1XFByb2plY3RzXEZsaXBab25fQmFja2VuZFxGbGlwWm9uX0JhY2tlbmRcYXBpXFByb2R1Y3REZXRhaWw=?=
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
Host: localhost:56265
Origin: http://localhost:4200
Pragma: no-cache
Referer: http://localhost:4200/OneItem

1 Ответ

0 голосов
/ 06 сентября 2018

Вы получаете доступ к API из домена, отличного от размещенного API, поэтому он блокирует ваши запросы. Добавление перекрестных запросов (CORS) должно решить вашу проблему. Вот ссылка на ASP.NET Core CORS документы .

В Startup.cs Вы должны быть в состоянии позвонить:

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

Но, возможно, потребуется указать ваше приложение Angular host в качестве источника:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
ILoggerFactory loggerFactory)
{

    // Shows UseCors with CorsPolicyBuilder.
    app.UseCors(builder =>
       builder.WithOrigins("http://localhost:4200"));

    app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Hello World!");
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...