无法从我的应用程序调用post webservice。以下是代码。
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));
})
如果我写这个代码然后它返回400错误但如果我使用谷歌的postman应用程序然后我得到响应没有任何错误。所以我很困惑,无论我写的代码是对还是错。因此我需要解决这个问题。
请浏览上面的图片。
答案 0 :(得分:1)
当客户端和服务器位于不同的域上时,通常会发生这种情况。首先通过OPTIONS飞行前检查验证客户端完成的POST请求,以查看是否可以进行POST。有时,服务器配置为不允许OPTIONS请求方法。在这种情况下,这将是飞行前OPTIONS检查的结果。
此处有更多信息 - Why is an OPTIONS request sent and can I disable it?
用于理解概念并帮助我们从服务器端应用程序配置响应头的其他资源如下:
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
在一天结束时,如果服务器未配置为处理跨站点请求,则无法从客户端进行任何操作。
此外,在某些情况下,服务器确实允许跨站点请求,进程并将响应发送回客户端,而不使用Access-Control-Allow-Origin
标头或Access-Control-Allow-Origin
标头,但不一样请求源或通配符“*”。在这种情况下,即使呼叫结果处于HTTP 200 OK状态,浏览器也会停止处理响应。