I'm trying to make a POST request with CORS.
I've a class that adds the correct response header on my methods inside my controller
using System;
using System.Web.Mvc;
public class AllowCrossSiteAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:4200");
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "*");
filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");
base.OnActionExecuting(filterContext);
}
}
and I use it like this
[AllowCrossSite]
public ActionResult GetReportParameters(string IdRapport)
But the problem is when I'm trying to make a POST request with a custom header to pass this specific content type
'Content-Type': 'application/json; charset=utf-8'
I'm actually getting these Response headers
So it's like nothing is done about the header even if I'm correctly going in my attribute class.
Here is my front side in Angular 2 service
const headers = new Headers({ 'Content-Type': 'application/json; charset=utf-8' });
const options = new RequestOptions({ headers: headers , withCredentials: true });
const mock = {
name: 'TitreRegroupement1',
visible: false,
type: 'System.String',
value: 'Test'
};
// tslint:disable-next-line:max-line-length
const body = JSON.stringify({ idRapport: '00392024-d171-4f39-9c5c-97a51f53fd54', filtre: '', exportFormat: '', parameters: data });
return this.http.post('http://localhost:8080/ReportingViewer/ExportReport', body, options)
.map((response: Response) => {
return this.extractSingleData(response, Parameters);
})
.catch(this.handleError);
}
By using postman there is no problem to declare, the whole thing travel correctly I can access my parameters from the method inside the controller with no problem.