Angular WithCredentials не работи за POST, PUT

Работя върху Angular сайт с:

• .Net Framework сървър на локален хост/тест

• клиент на localhost:4200

Удостоверяването на бисквитките работи и GET заявките ми работят добре.

   this.httpClient.get<Test>('dummyUrl', { withCredentials: true });

В моя web.config за сървъра имам следното.

    <add name="Access-Control-Allow-Credentials" value="true"/>
    <add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
    <add name="Access-Control-Allow-Methods" value="*" />

Като се има предвид тази настройка, бих очаквал същото да работи за PUT и POST заявки.

    this.httpClient.put('dummyUrl', this.payload, { withCredentials: true });

Получавам 401 Неразрешено от това.


Моето разследване

Методът на заявка, който виждам направен, е OPTIONS, което ми казва, че това е неуспешно при предварителния полет и че този проблем се отнася до CORS, а не до Angular. Не можах да разбера какво пропускам.

Ще съм благодарен за всякакви насоки.


person MGDavies    schedule 02.05.2018    source източник
comment
когато можете да разрешите проблема, аз съм изправен пред точно същия   -  person Hakan Fıstık    schedule 15.09.2019


Отговори (3)


Опитайте следния код.

import { RequestOptions, Headers } from '@angular/http';

let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers, withCredentials: true });

this.httpClient.put('dummyUrl', this.payload, options);
person Arun Raj R    schedule 02.05.2018
comment
Благодаря за вашият отговор. RequestOptions е отхвърлен, така че смятам, че трябва да го избягвам. В интерес на отстраняването на грешки все пак го опитах и ​​получих същото 401 поведение. - person MGDavies; 02.05.2018

Аз също имах подобни проблеми, дори с {withCredentials: true} на моите POST заявки.

В кода на моя Spring Boot сървър, където се занимава с CORS, имах заглавката Access-Control-Allow-Origin, зададена на *. Промених * на http://localhost:4200, откъдето се обслужваше моето Angular приложение.

Нещата заработиха добре след това. Надявам се това да помогне на някого.

person Pfuufy    schedule 15.04.2020

ако използвате в asp net core api с angular в предния край, след това в web api, настройка за стартиране (под configure method),

задайте следната настройка

        app.UseCors(options =>
        {
            options.SetIsOriginAllowed(origin => true);
            //options.AllowAnyOrigin();
            options.AllowAnyHeader();
            options.AllowAnyMethod();
            options.AllowCredentials();   <-- This one is important
        });

и трябва да работи.

person A SHAHZAD    schedule 04.11.2020
comment
stackoverflow.com/questions/61279426/ - person Walter White; 04.11.2020