Включать файлы cookie в HTTP-запросы при использовании JavaScript-клиента Google Cloud Endpoints

В настоящее время я выполняю вызовы API на свой сервер, используя клиент JavaScript, созданный Google Cloud Endpoint. Проблема в том, что файлы cookie для моей страницы не добавляются к HTTP-запросам. Как я могу добавить файл cookie Gitkit gtoken к моему запросу.

  • Бэкэнд - это Google App Engine Java.
  • Использование конечных точек Goole Cloud для создания моего API
  • Использование веб-клиента JavaScript для конечных точек Google Cloud, загруженного следующим образом gapi.client.load('myApi', 'v1', resourceLoaded, 'https://my-project-id.appspot.com/_ah/api');

Я уже настроил конечные точки Google Cloud на серверной части, чтобы разрешить файлы 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!
     */

    ...

}

Я звоню с помощью JS-клиента Google Cloud Endpoints.

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

Что мне нужно сделать, чтобы убедиться, что клиент Endpoints JS включает файл cookie gtoken в свой запрос?


person Marc M.    schedule 26.04.2016    source источник
comment
Открытое баунти и все еще нет ответов! Что я могу сделать, чтобы прояснить этот вопрос?   -  person Marc M.    schedule 29.04.2016
comment
Привет, Марк, вы можете добавить скриншоты хранилища файлов cookie + заголовки запросов и создать plunker / jsfiddle / jsbin для воспроизведения проблемы.   -  person Alexander Trakhimenok    schedule 29.04.2016
comment
@AlexanderTrakhimenok Вы имеете в виду хранение файлов cookie на стороне браузера?   -  person Marc M.    schedule 29.04.2016
comment
Да, есть вероятность, что файлы cookie не установлены или не отправляются на сервер. Вам нужно локализовать проблему. Если он пересылается браузером по проводам, проблема связана с сервером. Если он находится в хранилище файлов cookie, но не отправлен, это проблема клиента. Если его нет в хранилище, просто нечего отправлять, и другая проблема - выяснить, почему их вообще нет у клиента.   -  person Alexander Trakhimenok    schedule 30.04.2016
comment
@AlexanderTrakhimenok Хорошо, спасибо. Простите мои способности новичка, я новичок в файлах cookie. Где находится хранилище файлов cookie? Вы просто просите распечатать document.cookie?   -  person Marc M.    schedule 30.04.2016
comment
@AlexanderTrakhimenok Кроме того, похоже, что вы говорите, что файлы cookie должны автоматически упаковываться с запросом, если все в порядке. Это верно?   -  person Marc M.    schedule 30.04.2016
comment
Вы можете просматривать файлы cookie и заголовки запросов в инструментах разработки вашего браузера. И да, файлы cookie отправляются автоматически, если срок их действия не истек, и соответствуют префиксу хоста и пути.   -  person Alexander Trakhimenok    schedule 30.04.2016
comment
@AlexanderTrakhimenok Решил мою проблему. Проблема заключалась в том, что я выполнял вызовы своего API, размещенного на удаленном сервере GAE, с моего localhost: 8080 dev сервер. Я думал, что любой файл cookie для этой страницы будет включен во все запросы к любому серверу. Я не понял, что адресат запроса должен соответствовать домену cookie.   -  person Marc M.    schedule 30.04.2016
comment
@AlexanderTrakhimenok Если вы опубликуете ответ, я могу назначить вам награду. Я чувствую себя идиотом.   -  person Marc M.    schedule 30.04.2016
comment
Хорошо, чуть позже - будет моя первая награда :)   -  person Alexander Trakhimenok    schedule 30.04.2016
comment
Размещено резюме в качестве ответа.   -  person Alexander Trakhimenok    schedule 03.05.2016


Ответы (1)


Вам лучше добавить скриншоты хранилища файлов cookie + заголовки запросов и создать plunker / jsfiddle / jsbin для воспроизведения проблемы.

Есть вероятность, что файлы cookie не установлены или не отправляются на сервер. Вам нужно локализовать проблему. Если он пересылается браузером по проводам, проблема связана с сервером. Если он находится в хранилище файлов cookie, но не отправлен, это проблема клиента. Если его нет в хранилище, просто нечего отправлять, и другая проблема - выяснить, почему их вообще нет у клиента.

Вы можете просматривать файлы cookie и заголовки запросов в инструментах разработки вашего браузера. И да, файлы cookie отправляются автоматически, если срок их действия не истек, и соответствуют префиксу хоста и пути.

person Alexander Trakhimenok    schedule 02.05.2016
comment
Решил мою проблему. Проблема заключалась в том, что я выполнял вызовы своего API, размещенного на удаленном сервере GAE, с моего сервера localhost: 8080 dev. Я думал, что любой файл cookie для этой страницы будет включен во все запросы к любому серверу. Я не понял, что адресат запроса должен соответствовать домену cookie. - person Marc M.; 06.05.2016
comment
Привет, Марк, не могли бы вы рассказать мне, как решить эту проблему? - person Chameron; 18.11.2017