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 :) :) :)
