7

我目前正在使用Google Cloud Endpoint生成的JavaScript客戶端對我的後端進行API調用。問題是我的頁面的cookies沒有被添加到HTTP請求中。我如何將Gitkit gtoken cookie添加到我的請求中。使用Google Cloud Endpoints JavaScript客戶端時在HTTP請求中包含Cookie

  • 後端是谷歌應用程序引擎的Java
  • 使用古爾雲端點建立我的API
  • 使用加載了谷歌雲端點JavaScript的Web客戶端如下gapi.client.load('myApi', 'v1', resourceLoaded, 'https://my-project-id.appspot.com/_ah/api');

我已經配置了谷歌雲終端,在後端,允許cookie。 auth = @ApiAuth(allowCookieAuth = AnnotationBoolean.TRUE)

我的端點如下所示。

@ApiMethod(path = "user-account") 
public UserAccount get(HttpServletRequest httpRequest) { 

    GitkitUser gitkitUser = Gitkit.validate(httpRequest); // returns null 

    Cookie[] cookies = httpRequest.getCookies(); 
    log.severe("# of cookies: " + cookies.length); 
    for (Cookie cookie : cookies) { 
     log.severe("cookie name: " + cookie.getName()); 
     log.severe("cookie value: " + cookie.getValue()); 
    } 

    /* 
    * Logs 1 for # of cookies, with a cookie name of "G_ENABLED_IDPS" 
    * a value of "google". No gtoken cookie, even though I have 
    * checked and there is one! 
    */ 

    ... 

} 

我正在使用Google Cloud Endpoints JS客戶端撥打電話。

gapi.client.myApi.userAccountResource.get().execute(function (resp){ 
    ... 
}); 

有什麼我必須做的,以確保端點JS客戶端包括在它的請求gtoken餅乾嗎?

+0

打開賞金,仍然沒有答案!有什麼我可以做的,使這個問題更清楚? –

+1

Hi Marc,你可以添加cookies存儲+請求標題的屏幕截圖,並創建一個plunker/jsfiddle/jsbin來重現問題。 –

+0

@AlexanderTrakhimenok你的意思是瀏覽器端的cookie存儲? –

回答

2

您最好添加cookies存儲+請求標題的屏幕截圖,並創建一個plunker/jsfiddle/jsbin來重現該問題。

有可能cookie沒有設置或不發送到服務器。您需要本地化問題。如果它通過瀏覽器通過網絡發送,則問題出現在服務器端。如果它在Cookie存儲中但未發送,則爲客戶端問題。如果沒有存儲空間,就沒有什麼可以發送的,這是一個不同的問題,要找出他們爲什麼不在客戶端。

您可以查看cookies &請求瀏覽器devtools中的標題。是的,如果cookie沒有過期並且與主機&路徑前綴相匹配,cookie會自動發送。

+0

解決了我的問題。問題在於我從本地主機:8080 dev服務器上調用了我的API,它位於遠程GAE服務器上。我認爲任何服務器的請求都會包含該頁面的任何cookie。我不明白請求目標需要匹配cookie的域名。 –

+0

嗨,馬克,你能讓我知道解決這個問題的方法嗎? – Chameron

相關問題