angular post 请求 content-type application/json 无效
angular post request with content-type application/json not working
我尝试使用 angular 发送 post 请求,但是当我将 content-type 设置为 application/json
请求 content-type 始终未设置并且 HTTP 方法始终被删除并且所有 posted 数据从请求正文中删除
这是我的代码
这里是我的请求
如果你这样设置接受headers,就够了。
const headers = new HttpHeaders()
.set('Accept', 'application/json');
无需设置内容headers。
the HTTP method always removed and all posted data removed from request body
在您分享的截图中,我们可以发现您捕获的请求是一个OPTIONS
请求(preflight request),而不是实际的POST
请求。所以你发布的数据不在请求正文中。
此外,下面的代码片段在我这边效果很好,你可以参考一下。
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);
});
控制器和动作
[Route("[controller]")]
[ApiController]
public class StudentController : ControllerBase
{
[HttpPost]
public IActionResult Post(Student student)
{
return Ok(student);
}
}
测试结果
我只是想扩充韩飞的答案。如果您使用 asp core
作为服务器端,您应该像这样在 Startup.cs 中配置 Cors :
app.UseCors(x =>
x.AllowAnyHeader()
.AllowAnyMethod()
.AllowAnyOrigin());
我尝试使用 angular 发送 post 请求,但是当我将 content-type 设置为 application/json 请求 content-type 始终未设置并且 HTTP 方法始终被删除并且所有 posted 数据从请求正文中删除 这是我的代码
这里是我的请求
如果你这样设置接受headers,就够了。
const headers = new HttpHeaders()
.set('Accept', 'application/json');
无需设置内容headers。
the HTTP method always removed and all posted data removed from request body
在您分享的截图中,我们可以发现您捕获的请求是一个OPTIONS
请求(preflight request),而不是实际的POST
请求。所以你发布的数据不在请求正文中。
此外,下面的代码片段在我这边效果很好,你可以参考一下。
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);
});
控制器和动作
[Route("[controller]")]
[ApiController]
public class StudentController : ControllerBase
{
[HttpPost]
public IActionResult Post(Student student)
{
return Ok(student);
}
}
测试结果
我只是想扩充韩飞的答案。如果您使用 asp core
作为服务器端,您应该像这样在 Startup.cs 中配置 Cors :
app.UseCors(x =>
x.AllowAnyHeader()
.AllowAnyMethod()
.AllowAnyOrigin());