VB ASP.Net Windows аутентификация не работает с Angular - PullRequest
0 голосов
/ 16 мая 2019

Проблема

Я пытаюсь настроить политику CORS, чтобы мое приложение Angular могло вызывать веб-службу ASP.net.Я могу внести изменения в оба приложения.

Я получаю эту ошибку в Chrome:

Доступ к XMLHttpRequest по адресу "http://localhost:11434/myurl/mywebservice.asmx' из источника" http://localhost:4200'была заблокирована политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: значение заголовка «Access-Control-Allow-Credentials» в ответе равно «», которое должно быть «true», когда в режиме учетных данных запросаэто «включить».Режим учетных данных запросов, инициированных XMLHttpRequest, управляется атрибутом withCredentials.

Этот в Edge:

HTTP401: ОТКЛ - Запрошенный ресурс требует аутентификации пользователя.(XHR) ОПЦИИ - http://localhost:11434/myurl/mywebservice.asmx

Я могу успешно сделать запрос в Почтальоне.

Заголовки ответа

Access-Control-Allow-Origin → http://localhost:4200

Методы контроля доступа-разрешения → GET, PUT, POST, DELETE, HEAD, OPTIONS

Access-Contol-Allow-Credentials → true

Angular

Я использую перехватчик для добавления заголовков к каждому запросу.

AuthInterceptor

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
  constructor(){}

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    req = req.clone({
        withCredentials: true
    });

    console.log(req);

    return next.handle(req);
  }
}

ApiService

public getData() {
    const url: string = myBackendUrl;
    const requestData = {
      data: "my request data"
    }

    return this.http.post(url, requestData, {responseType: 'json'});
  }

AppModule

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule
  ],
  providers: [
    ApiService,
    {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true}
  ],
  bootstrap: [AppComponent]
})

ASP.Net

Использование web.config для настройки CORS.

web.config

<system.web>
  <authentication mode="Windows"/>
  <authorization>
    <allow users="?"/>
  </authorization>
</system.web>

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
        <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS" />
        <add name="Access-Contol-Allow-Credentials" value="true" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

What I 'я попробовал

Я просмотрел следующие посты, чтобы попытаться решить эту проблему.

Заголовок 'Access-Control-Allow-Credentials' в ответе '', который должен быть 'trueЗаголовок «

Access-Control-Allow-Credentials» в ответе равен «», который должен быть «истинным»

значениеЗаголовок «Access-Control-Allow-Credentials» яn ответ «», который должен быть «истинным»

CORS: режим учетных данных «включать»

флаг учетных данных равен «true», но приложение Access-Control-Allow-Credentials

Windows Authentication и Angular 4

Спасибо за помощь.

...