0

Unable to call post webservice from my application. following is the code.

var postLogin = "http://0.0.0.0:000/ddd/v1/login";
var loginvalue = {"email":"some@mail.com","password":"cbsjc6dw3bgjyfdgdKHGGDF="};
var config = {
        headers: {              
          'Content-Type': 'application/json'             
        }
      }
$http.post(postLogin ,loginvalue,config ).success( function(response) {
    alert("response "+ response)
    $scope.defer.resolve(response);  
}).error(function(error){
    alert("dddddd" + JSON.stringify(error));
})

If i write this code then it is returning as 400 error but if i use the postman application of google then i am getting the response without any error. So i am in confusion that whatever the code i have written is right or wrong. Hence i need to solve this issue.

enter image description here

Please go through the above image.

Shashank Vivek
  • 13,776
  • 7
  • 48
  • 88

1 Answers1

1

This usually happens when Client and Server are on different domains. The POST requests done by the client are first verified with a OPTIONS pre-flight check, to see if a POST would be possible. Sometimes, servers are configured to not allow OPTIONS request method. This will be the outcome of a pre-flight OPTIONS check, in such a case.

There is more information here - Why is an OPTIONS request sent and can I disable it?

Other resources for understanding the concept and helping us to configure the Response headers from the Server-side application are here:

https://medium.com/@praveen.beatle/avoiding-pre-flight-options-calls-on-cors-requests-baba9692c21a

https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

At the end of the day, if the Server is NOT configured to handle Cross-site requests, nothing can be done from the client-side.

Also, there are cases where the server does allow cross-site request, processes and send the response back to client, without the Access-Control-Allow-Origin header or with the Access-Control-Allow-Origin header, but not the same as the request origin or a wildcard "*". In such cases, browser stops processing the response, even when the call turns out to be in HTTP 200 OK Status.

Below is one such example, that I recently encountered while integrating with an external application. enter image description here

Rangamannar
  • 174
  • 4