angular - Angular2. Http. Kan ikke sende post med kropp og sette Content-Type


Jeg skriver en app med bruk av Angular2 som front-end-del (~2.4.0) og ASP.NET CORE som back-end-del.

Jeg har et veldig stort problem med å sende en POST-forespørsel. Chrome forteller meg at jeg ikke har noen kropp i forespørselen, og jeg kan heller ikke sette opp innholdstypen for forespørselen.

Jeg prøvde på noen forskjellige måter. Men ingen fungerte

         let headers = new Headers();
         headers.append('Content-Type', 'application/json');
         headers.append('authentication', `3123123123`);

         let options = new RequestOptions({ headers: headers });
         this.http
         .post('http://localhost:5000/api/user/login', JSON.stringify(this.loginModel), options)
         .subscribe((result) => {
                     if (result) {
                         .......
                     }
                 });

Sekund :

PostRequest(url:string,data:any) {
    var headers = new Headers();
    headers.append("Content-Type", 'application/json');

    var requestoptions = new RequestOptions({
        method: RequestMethod.Post,
        url: url,
        headers: headers,
        body: JSON.stringify(data)
    })

    return this.http.request(new Request(requestoptions))
        .map((res: Response) =>
        res.json()
    ).subscribe((result) => {
            if (result) {
                ....
            }
        });
}

Den tredje:

    let headers = new Headers();
    headers.append('Accept', 'application/json');
    headers.append('Content-Type', 'application/json');


    let body = JSON.stringify(loginDto);
    let options = new RequestOptions({headers: headers});

    return this.http
        .post(
            '....',
            body,
            options
        )
        .map(res => res.json()).subscribe((result) => {
            if (result) {
                ....
            }
        });

OPPD :

Jeg har prøvd @Akshay Khale-metoden, og det fungerer fortsatt ikke. Jeg får fortsatt overskrifter uten innholdstype

RESOLUSJON :

Problemet var på back-end-siden. CORS-konfigurasjonen var gjort på feil måte. Og ASP.NET CORE blokkerte alle tilpassede overskrifter. Takk til alle for hjelpen

Svar #1

Problemet var på baksiden. CORS-konfigurasjonen var gjort på feil måte. Og ASP.NET CORE blokkerte alle tilpassede overskrifter. Takk til alle som hjalp

P.S.

Jeg skrev noen linjer om dette problemet på bloggen min

Svar #2

I koden din bør det første alternativet fungere, men i den andre parameteren trenger du ikke å gjøre JSON.stringify.

Nedenfor er koden som fungerer

Den vil slå til den angitte eksterne URL-en med en Post-forespørsel og skrive ut de returnerte dataene i konsollen.

let body:any = { "parameter1": "value1", "parameter2": "value2" };
let url = "example.com";
let response:any;
let headers    = new Headers({ 'Content-Type': 'application/json' });
let options    = new RequestOptions({ headers: headers });
this.http.post(url, body, options).map((res:Response) => res.json()).subscribe(
                     data => { response = data },
                     err => console.error(err),
                     () => { console.log(response) });

glad for å hjelpe :) :) :)

Relaterte artikler