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.