我对AngularJS(不是版本2)相当新,我有一个单页应用程序,它在站点X上调用(POST)PHP脚本,并显示数据。我正在使用Angular JS v1.5.7并且我没有使用任何其他东西(例如bootstrap)。
工作正常。我通过使用jquery.ajax添加了身份验证,这很好。然后我意识到使用带有Angular的JQuery.ajax()可能不是最好的前进方式,但是在尝试删除.ajax()调用并用$ http替换它时,它已经失败了。
我可以从调试器(例如Chrome)看到,当我进行身份验证调用时,PHPSESSID cookie不会发送到服务器。在服务器上进行调试确认了这一点。我从服务器看到了正确的回复,并且包含了cookie。
我处理回复,JavaScript会获取我的数据....但是我们没有将PHPSESSID cookie发送到服务器,所以它失败了。
如果我使用JQuery ajax()发送身份验证POST(以及所有其他调用的$ http)就可以了,所以它必须与$ http.post相关联才能进行身份验证。
以下是片段:
myAPI.authenticate = function(user, pass) {
return $http({
method: "POST",
url: "authenticate.php",
withCredentials: true,
data: "authReq=&userid="+user+"&passwd="+pass,
})
}
我也试过了:
var app=angular.module('myApp.controllers', [])
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}]);
我已经看到很多关于使用withCredentials的评论:true,并试图在请求和配置中设置$ httpProvider.default.withCredentials为true。其中大多数是谈论CORS,但在这种情况下,请求都是在同一台服务器上完全相同的页面,因此它不是与原点相关的。
我错过了什么?它必须与Angular框架有关,因为它适用于JQuery进行身份验证(以及用于之后检索数据的$ http)
由于 Monathan