角度http.post被发送PHPSESSID cookie ...但它没有被发回

时间:2016-12-27 15:41:57

标签: angularjs angular-cookies

我对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

0 个答案:

没有答案