Use the data: instead of params: to pass the object you would like to go in the body of the request. I also don’t see that you are doing anything that can’t be done with basic $http service.
[Error] Failed to load resource: Request header field Content-Type is not allowed by Access-Control-Allow-Headers. (StartSession, line 0)[Error] XMLHttpRequest cannot load URL/Auth/StartSession. Request header field Content-Type is not allowed by Access-Control-Allow-Headers. (localhost, line 0)
Is this a cross-domain request? Access-Control-Allow-Headers are related to CORS which usually means you are involved in a cross-domain request.
Angular defaults to posting as JSON rather than application/x-www-form-urlencoded, this means if doing a cross-domain request the borwser will issue an OPTIONS pre-flight request and Content-Type header must be specifically allowed by the server.
To solve your issue you can try the following:
Post your body as ‘application/x-www-form-urlencoded’ instead of json. You can see how to do this in this SO answer here:
http://stackoverflow.com/questions/11442632/how-can-i-make-angular-js-post-data-as-form-data-instead-of-a-request-payload