I have read many similar problems in StackOverflow, but the solutions doesn't work for me.
I have WCF REST service:
[<OperationContract>]
[<WebInvoke(UriTemplate = "PostItem",
RequestFormat= WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json, Method = "POST")>]
I can use it using Postman (Chrome extension). I am passing data as 'raw', not 'urlencoded'. And I get 200 return code.
I need to call this method using angularjs:
$http.post('http://192.168.1.65/Service1.svc/restapi/PostItem',
{
"Address": "г. Москва, ул. Соколово-Мещерская, д.25",
...
"User": ""
})
I have just copied URL and JSON from Postman. But I get the error:
angular.js:10722 OPTIONS http://192.168.1.65/Service1.svc/restapi/PostItem http://192.168.1.65/Service1.svc/restapi/PostItem. Response for preflight has invalid HTTP status code 405
I have searched similar problems and have found two solutions:
- Use jQuery to set header
Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
, but it doesn't work with my WCF service Set custom headers in my Web.Config:
<httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> </customHeaders> </httpProtocol>
It doesn't help me. And I am not sure that the reason of the error on the server side. The Postman extension can call this method succesfully.
How can I make the same POST call using AngularJS ?
Update:
Here is OPTIONS request:
Review and Response tabs are empty
Update 2:
All works fine in IE, but doesn't work in Chrome.