2015-07-19 57 views
0

我有一台服务器,我正尝试向其发送Cookie。我发送第一个POST请求,将响应头中收到的cookie存储起来,并尝试使用第二个GET请求来检索经过身份验证的用户只能访问的数据。跨域请求没问题,我可以在Phonegap应用程序中检索我的cookie,但是当发送这些请求时,它会失败。请求标题不包含任何cookie。 phonegap -v返回5.1.1-0.29.0无法通过电话号码发送包含AJAX跨域请求的Cookie

我已经尝试过:

  • 域添加到白名单中

  • 确保我保存的饼干并不在请求头,服务器端,在所有

  • 通过C#发出同样的请求,以确保它不会成为服务器端问题

请求代码:

$.ajax(
     { 
      type: "GET", 
      url: "url", 
      xhrFields: { 
       withCredentials: true 
      }, 
      crossDomain: true, 
      beforeSend: function(xhr) { 
       xhr.setRequestHeader("Cookie", mycookies); 
      }, 
      success: function(data){ 
       console.log(data); 
      }, 
      error: function (xhr) { 
       console.log(xhr.responseText); 
      } 
     } 
    ); 

任何帮助将是非常赞赏,谢谢。

回答

0

最终,PhoneGap的似乎并不具有任何外部插件,可以让你执行跨域AJAX与cookie电话头。愚蠢。我通过编写一个小代理解决了问题,无法解决任何其他更好的解决方案。感谢任何试图帮助的人,我欣赏它。

0

通过快速搜索,我了解Cordova不会持有Cookie,因此您必须改用本地存储。

这里是例子:http://justbuildsomething.com/cordova-and-express-session/

+0

已经阅读,重点是发送饼干,不存储它们。 – Fehniix

+0

如果Cordova无法存储Cookie,则应将它们添加到ajax调用中。你试过Hanh Le的建议吗?应该管用。 – Sharko

+0

也许这会帮助你:http://stackoverflow.com/a/5422323/2112228 – Sharko

0

添加饼干在头AJAX:

$.ajax(
    { 
     type: "GET", 
     url: "url", 
     xhrFields: { 
      withCredentials: true 
     }, 
     crossDomain: true, 
     headers: { 
      Cookie: mycookies 
     }, 
     success: function(data){ 
      console.log(data); 
     }, 
     error: function (xhr) { 
      console.log(xhr.responseText); 
     } 
    } 
); 
+0

其中'Cookie:“test = test;”',我简单的PHP脚本'var_dump($ _ COOKIE);'返回'array(0)'。那么还没有。 – Fehniix