2015-07-19 62 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