3

我在 HTML5 中有一个简单的 Backbone.js/Bootstrap 前端和一个 Node.js/Restify 后端。我在来自服务器的标头响应中设置 cookie,如下所示:

res.setHeader("Set-Cookie", ["token=ninja", "language=javascript"]);

在客户端,我正在进行 REST 调用

var response = this.model.fetch().success(function(data){
           //success
           }).error(function(data){
           //error 
           }).complete(function(data){
            //complete
           });

回调模型中的解析方法。

如何读取模型中的 cookie 值?

4

3 回答 3

1

这是我想出来的。我的应用程序有两个组件 - 来自一个域的 HTML/js 与另一个域上的 REST 服务通信(因此是跨域的。)因为 cookie 是从 REST 设置的,所以它似乎无法跨域读取。因此,即使服务器正在发送 cookie,网页也不会存储它。一种替代方法是使用本地 cookie 或使用http://backbonetutorials.com/cross-domain-sessions/说明的技术。

于 2012-05-24T15:35:08.433 回答
1

包括Cookie.js

然后,您可以像这样引用单个 cookie:

var token = Cookie.get('token')

# token == 'ninja'
于 2012-05-23T01:11:22.647 回答
0

假设您正在使用带有 Backbone 的 jQuery,您可以parse通过调用getAllResponseHeaders或在模型中定义函数来获取标头getResponseHeader

var model = Backbone.Model.extend({

    // the rest of your model

    parse: function(resp, xhr) {
        var allHeaders = xhr. getAllResponseHeaders();
        var cookieHeader = xhr. getResponseHeader("Set-Cookie");

        // do something with the headers

        return resp;
    }
});
于 2012-05-23T01:19:46.477 回答