使用Angular在从前端到后端的http请求中发送cookie

时间:2015-03-10 10:42:14

标签: angularjs angular-http angular-cookies

我正在使用AngularJS开发一个Web应用程序。

应用程序通过以下方式实现:

  • 一个前端,一个没有逻辑的组件,只是简单地查询后端多次,以便从中接收所有需要的数据;
  • 后端,包含许多RESTful服务,并且每个服务都将数据返回到前端(如果前端调用它)。

在我的前端,在主控制器中,我使用$ cookieStore创建一个cookie,这样:

// Setting sessionID in the cookie
$cookieStore.put('sessionID', $scope.contextData.sessionId);

现在,我想将此cookie的信息发送到我调用的通用后端服务。例如,我的一个电话有这种形式:

$http({
       method: "GET",
       url: urlBase + "/context/person"
    }).success(function(result, status, headers, config) {
        $scope.currentPerson = result;
    });

如何发送Cookie? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您应该设置参数withCredentials,请参阅docs

  

默认情况下,调用不使用Cookie。由于这是一个简单的GET请求,因此不会预检,但浏览器将拒绝任何没有Access-Control-Allow-Credentials:true标头的响应,并且不会使响应可用于调用Web内容。

我假设您在服务器的同一域中运行脚本,因为

  

由于只有在您的域上运行的JavaScript才能读取Cookie,因此您的服务器可以确保XHR来自您域上运行的JavaScript。不会为跨域请求设置标头。

答案 1 :(得分:0)

$http({
   method: "POST",
   url: urlBase + "/context/person"
}).success(function(result, status, headers, config) {
    $scope.currentPerson = result;
});

或者您可以使用角度快捷方式post方法:

$http.post('/someUrl', data, config).then(successCallback, errorCallback);

POST方法会将cookie发送到后端。在后端,您可以使用JSON.parse(req.cookies)来获取Cookie。