【问题标题】:Phonegap, cookies, cross domain requestsPhonegap、cookies、跨域请求
【发布时间】:2012-09-30 01:08:22
【问题描述】:

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

POST remoteserver/api/users/login

服务器响应设置 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) 是否可以让 cookie 发挥作用?

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);
        }
    });

【问题讨论】:

    标签: jquery cordova cookies cross-domain


    【解决方案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);
            }
        });
    

    【讨论】:

    • 这个对我有用。但是,加载具有身份验证的静态文件失败。我不知道如何实现静态图像文件。
    • @user1026361,我可以这样设置连接头吗?
    猜你喜欢
    • 2012-12-04
    • 2010-11-08
    • 1970-01-01
    • 2017-06-15
    • 2014-09-10
    • 2013-03-06
    相关资源
    最近更新 更多