今天在做一个登录页面的输入验证码功能。一直显示验证码不正确,可是我仔细核对了很多次,仍然提示不正确。我猜想不是我看错,而是程序哪里有问题,但是也一直找不出原因。问了我们产品经理,才知道,需要设置withCredentials属性
$http({
method:'POST',
url:config.login,
withCredentials: true,//必须要填
headers:{
"Content-Type":"application/x-www-form-urlencoded"
},
transformRequest:transformRequest,
data:$scope.account,
}).then(function (response) {
xxxx
}
})
另外一点要注意的是
// 用于上传application/x-www-form-urlencoded,否则一直无法提交数据
function transformRequest(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
}
jquery的withCredentials写法
$.ajax({
data:data,
url:url,
type:"POST",
xhrFields:{
withCredentials:true
}
success:function(res){
...
}
})
如果不想在每个请求中写withCredentials,可以单独写。
$.ajaxSetup({
xhrFields:{
withCredentials:true,
}
})