Moneim
Moneim

Reputation: 63

angular post request with content-type application/json not working

I try to send post request with angular but when i set content-type to application/json the request content-type always not set and the HTTP method always removed and all posted data removed from request body here my code

enter image description here

and here my request

enter image description here

Upvotes: 3

Views: 8327

Answers (3)

Сергей
Сергей

Reputation: 888

I just wanted to expand Fei Han answer. If you are using asp core as server side you should configure Cors in Startup.cs like this :

app.UseCors(x =>
    x.AllowAnyHeader()
    .AllowAnyMethod()
    .AllowAnyOrigin());

Upvotes: 0

Fei Han
Fei Han

Reputation: 27793

the HTTP method always removed and all posted data removed from request body

In the screenshot you shared, we can find that the request you captured is a OPTIONS request (preflight request), not actual POST request. So the data you posted is not in request body.

Besides, the following code snippet works well on my side, you can refer to it.

var student = {'name' : 'testuser', 'age' : 29};

const headers = new HttpHeaders().set('Content-Type','application/json');

this.http.post<Student>('https://xxxx/student',JSON.stringify(student),{headers:headers})
.subscribe(data => {
  console.log(data);
});

Controller and Action

[Route("[controller]")]
[ApiController]
public class StudentController : ControllerBase
{
    [HttpPost]
    public IActionResult Post(Student student)
    {
        return Ok(student);
    }
}

Test Result

enter image description here

Upvotes: 4

Venkatesh K
Venkatesh K

Reputation: 153

If you set Accept headers like this, its enough.

 const headers = new HttpHeaders()
      .set('Accept', 'application/json');

No need to set content headers.

Upvotes: -1

Related Questions