5

我正在开发一个需要连接到过时的远程服务器的phonegap应用程序。一些远程请求已经过身份验证,我打算使用记住我的服务。因此,应用程序中有一个登录选项,该选项被转换为使用jQuery $.ajax执行的以下请求。请注意,所有请求都是application/json

发布远程服务器/api/用户/登录

并且服务器响应设置cookie

设置 Cookie REMEMBER_ME_COOKIE=amVzdS5hbG9uc29AZ21haWwuY29tOjEzNTEwMDg1NTg1NDY6ODdkOGFhNzEzY2NiZTRhZTIwZjZlNzgyY2E1ZmQyODY;过期=星期二,2012 年 10 月 23 日 16:09:18 GMT;路径=/; HttpOnly

为了使跨域请求正常工作,服务器对 OPTIONS 请求的响应如下:

Access-Control-Allow-Headers : Content-Type, *
Access-Control-Allow-Origin : *
Access-Control-Max-Age : 1000

但是,对服务器的下一个请求没有设置 Cookie 标头。

1)是否有可能使cookies工作?

2) 我也尝试在 $.ajax 请求中手动添加 cookie,但它也不起作用。有什么问题吗?

$.ajax({
        type : type,
        url : url,
        data : data,
        success : callback,
        dataType : dataType,
        contentType : contentType,
        beforeSend: function(xhr) {
            xhr.setRequestHeader("Cookie", "REMEMBER_ME_COOKIE=amVzdS5hbG9uc29AZ21ha");
          },
        error : function(jqXHR, textStatus, errorThrown) {
            handleError(jqXHR, textStatus, errorThrown);
        }
    });
4

1 回答 1

1

您是否尝试过将标头结构化到您的请求中?

$.ajax({
        type : type,
        url : url,
        data : data,
        success : callback,
        dataType : dataType,
        contentType : contentType,
        headers:{
             "Cookie" : "amVzdS5hbG9uc29AZ21ha"
        },
        error : function(jqXHR, textStatus, errorThrown) {
            handleError(jqXHR, textStatus, errorThrown);
        }
    });
于 2012-10-09T16:42:31.807 回答