Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> записать cookies 
:(
    Опции темы
vthm3
Дата 2.9.2015, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



хорошо.. а как записать cookies?

у меня веб джава програма, которая находится на локалхост, отправляет запрос на другой севрер.. и в результате сервер присылает свои cookies..

я получаю эти cookie и записываю так:
Код

Application.getInstance().getMainWindow.executeJavaScript("document.cookie='"cookie.getName()+"="cookie.getValue +"; domain="+cookie.getDomain()+"'");



в хроме, включаю инструмент для разработчиков, и там вижу, что параметры куки установлены..


имя - параметр - localhost - Session


НО.. когда я устанавливаю cookie.getDomain() куки не устанавыливаются вообще, если я это удаляю (cookie.getDomain()), то куки устанавливаются с доменом localhost..

как мне записать эти куки с тем доменом который вовращает куки?

Это сообщение отредактировал(а) vthm3 - 2.9.2015, 14:23
PM MAIL   Вверх
Samotnik
Дата 3.9.2015, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



vthm3, давай нормальный кусок кода. Как ты получаешь куки и как ты хочешь их дальше использовать? 
PM MAIL   Вверх
vthm3
Дата 3.9.2015, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



Цитата(Samotnik @ 3.9.2015,  10:51)
vthm3, давай нормальный кусок кода. Как ты получаешь куки и как ты хочешь их дальше использовать?


Samotnik,

у меня есть два домена.. 

sharepoint.server.com и app.server.com


где-то по ходу работы программы app.server.com я делаю невидимую ntlm аудентификацию на сервере sharepoint.server.com..
sharepoint.server.com возвращает мне куки, которые я хочу записать в память браузера..

как мне это сделать?


я их могу записать, но только с параметром демен app.server.com.. 
и в этом случае они не будут видимы серверу sharepoint.server.com


как их записать в память браузера, чтобы sharepoint.server.com не просил последующую авторизация пользователя, а использовал данных куки из браузера??
то есть, как мне их записать в память браузера с доменом sharepoint.server.com, при этом работаючи со страницы, которая находится на домене app.server.com??

Добавлено @ 13:41
Цитата(Samotnik @ 3.9.2015,  10:51)
vthm3, давай нормальный кусок кода. Как ты получаешь куки и как ты хочешь их дальше использовать?

Код

DefaultHttpClient httpClient = new DefaultHttpClient(cm,params);
httpClient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory());
httpClient.getCredentialsProvider().setCredentials(new AuthScope(AuthScope.ANY),
new NTCredentials("login", "pass", null, "server.net"));
HttpGet httpget = new HttpGet("htts://sharepoint.server.com/");
HttpResponse response;
try {
     response = httpClient.execute(httpget);
     StatusLine entity = response.getStatusLine();
     System.out.println("executing request " + httpget.getRequestLine());
     System.out.println(entity.toString());
     System.out.println("");
Header[] headers = response.getAllHeaders();
for (Header header : headers) {
      System.out.println(header.getName() + " : " + header.getValue());
}

List<Cookie> cookies = httpClient.getCookieStore.getCookies();

for(Cookie cookie:cookies)
{
JavaApp.getInstance().getMainWindow().executeJavaScript(
"document.cookie='" + cookie.getName()+"="+cookie.getValue() +"; domain="+cookie.getDomain()+"; path="+cookie.getPath()+"'");
}


и в этом случае оно не устанавливает куки, потому что cookie.getDomain() = sharepoint.server.com, а страница работает с домена app.server.com
НО, если я со строчки удалаю +"; domain="+cookie.getDomain(), и ничего не пише в домен, то оно устанавливает куки, но только с доменом app.server.com

А мне нужно установить куки с доменом sharepoint.server.com

КАК МНЕ ЭТО СДЕЛАТЬ???????????????????????????????

Это сообщение отредактировал(а) vthm3 - 3.9.2015, 13:45
PM MAIL   Вверх
Samotnik
Дата 4.9.2015, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Так ну теперь хоть стало ясно что к чему smile
Да, действительно, cookie.getDomain() вернет домен sharepoint.server.com и это логично. 
Можно сделать "хак", вместо: 
Код

JavaApp.getInstance().getMainWindow().executeJavaScript(
"document.cookie='" + cookie.getName()+"="+cookie.getValue() +"; domain="+cookie.getDomain()+"; path="+cookie.getPath()+"'");

написать в лоб:
Код

JavaApp.getInstance().getMainWindow().executeJavaScript(
"document.cookie='" + cookie.getName()+"="+cookie.getValue() +"; domain=app.server.com; path="+cookie.getPath()+"'");

Я помню в таких случаях действует политика веб безопастности, из раздела "кросс доменные запросы", которые запрещены в принципе. Обычно, это действительно можно обойти через iframe, так что подход верный. Попробуй этот вариант, хотя он вроде как очевиден, уже пробовал?

еще нужно проверить что cookie.getPath() возвращает?

Это сообщение отредактировал(а) Samotnik - 4.9.2015, 00:46
PM MAIL   Вверх
vthm3
Дата 4.9.2015, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



cookie.getPath = /

Ваш вариант пробовал, в этом случае, куки не устанавливаются вообще...

больше без вариантов?
PM MAIL   Вверх
Samotnik
Дата 4.9.2015, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



vthm3, ожидаемо. вообще вариант с: .server.com должен работать. Но разрешит ли полиси напрямую сделать. Попробуй, много времени не займёт.

Что бы выглядело красиво, а не хардкодом:
Код

String domainName = cookie.getDomain();
String domainNamePrefix = domainName.substring(domainName.indexOf("."), domainName.length());


Это сообщение отредактировал(а) Samotnik - 4.9.2015, 10:39
PM MAIL   Вверх
vthm3
Дата 4.9.2015, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



а если бы у меня было совершенно два разных сервера, домена..

тогда не возможно было бы это сделать?

например.. server.com and server.net

как в этом случае?

Добавлено @ 10:49
Цитата(Samotnik @ 4.9.2015,  00:41)
Так ну теперь хоть стало ясно что к чему smile
Да, действительно, cookie.getDomain() вернет домен sharepoint.server.com и это логично. 
Можно сделать "хак", вместо: 
Код

JavaApp.getInstance().getMainWindow().executeJavaScript(
"document.cookie='" + cookie.getName()+"="+cookie.getValue() +"; domain="+cookie.getDomain()+"; path="+cookie.getPath()+"'");

написать в лоб:
Код

JavaApp.getInstance().getMainWindow().executeJavaScript(
"document.cookie='" + cookie.getName()+"="+cookie.getValue() +"; domain=app.server.com; path="+cookie.getPath()+"'");

Я помню в таких случаях действует политика веб безопастности, из раздела "кросс доменные запросы", которые запрещены в принципе. Обычно, это действительно можно обойти через iframe, так что подход верный. Попробуй этот вариант, хотя он вроде как очевиден, уже пробовал?

еще нужно проверить что cookie.getPath() возвращает?

Код

JavaApp.getInstance().getMainWindow().executeJavaScript(
"document.cookie='" + cookie.getName()+"="+cookie.getValue() +"; domain=app.server.com; path="+cookie.getPath()+"'");


да, но тогда эти куки не сможет читать sharepoint.server.com..

а в том то и дело, что нужно мне записать куки так, что бы они были видимы для sharepoint.server.com


и тогда когда я вызываю ссылку на sharepoint.server.com, из app.server.com (java application), sharepoint будет видеть свои же куки (которые он установил), и не показывает мне окно авторизации (так как по куках понимает что пользователь уже авторизирован)



Это сообщение отредактировал(а) vthm3 - 4.9.2015, 10:51
PM MAIL   Вверх
Samotnik
Дата 4.9.2015, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Цитата(vthm3 @  4.9.2015,  10:44 Найти цитируемый пост)
а если бы у меня было совершенно два разных сервера, домена..
тогда не возможно было бы это сделать?
например.. server.com and server.net

Нет, это не возможно. Куки шарятся только на одном домене, между поддоменами и то, как видишь, не так просто даже сделать и это. site.com может расшарить на foo.site.com и bar.site.com

PM MAIL   Вверх
vthm3
Дата 4.9.2015, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



ну а если я работаю из app.server.com, и получаю куки из sharepoint.server.com,

то могу ли я установить куки sharepoint server на домен app.server.com с доменом .server.com


и будут ли они тогда видимы share point servery из главной программы app.server.com??

Это сообщение отредактировал(а) vthm3 - 4.9.2015, 10:57
PM MAIL   Вверх
Samotnik
Дата 4.9.2015, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Цитата(vthm3 @  4.9.2015,  10:44 Найти цитируемый пост)
да, но тогда эти куки не сможет читать sharepoint.server.com..

почему? По идее должен мочь. Вот пример с винграда:


Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  vin.png 11,23 Kb
PM MAIL   Вверх
vthm3
Дата 4.9.2015, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



хорошо, нужно попробовать, а то у меня сейчас главная программа на локалхосте.. а sharepoint на сервере)

спасибо)
PM MAIL   Вверх
Samotnik
Дата 4.9.2015, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



vthm3, у меня была такая же задача. Был главный проект site.xxx и я делал под проект sub.site.xxx 
После одобрения главного сервера я на нём выставлял куку .site.xxx и мой поддомен был доволен. Единственная проблема была с IE9, который не хотел работать с кроссдоменными запросами (и ему всё равно что я шлю запросы на свой же домен, а не посторонний) и для IE9 я создавал iframe. Но в 10 и 11 эта проблема ушла и костыль был удалён год назад. 
Да, ещё в томкате, если /ты хочешь шарить сессиюserver.xml нужно написать:
Код

<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">


Это сообщение отредактировал(а) Samotnik - 4.9.2015, 11:22
PM MAIL   Вверх
vthm3
Дата 4.9.2015, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



Цитата(Samotnik @ 4.9.2015,  11:19)
vthm3, у меня была такая же задача. Был главный проект site.xxx и я делал под проект sub.site.xxx 
После одобрения главного сервера я на нём выставлял куку .site.xxx и мой поддомен был доволен. Единственная проблема была с IE9, который не хотел работать с кроссдоменными запросами (и ему всё равно что я шлю запросы на свой же домен, а не посторонний) и для IE9 я создавал iframe. Но в 10 и 11 эта проблема ушла и костыль был удалён год назад. 
Да, ещё в томкате, если /ты хочешь шарить сессиюserver.xml нужно написать:
Код

<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">

да, но у вас был главный домен и поддомен..

а у меня два поддомена.. sharepoint.server.com и portal.server.com

и получается что мне надо установить куки sharepoint сервера с главным доменом ".server.com"

или это то же самое по принципу получается?

Это сообщение отредактировал(а) vthm3 - 4.9.2015, 11:39
PM MAIL   Вверх
Samotnik
Дата 8.9.2015, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



ну что? есть новости? Я думаю так, что если поддомен утсановит куки для главного домена, то всё заработает. 
PM MAIL   Вверх
vthm3
Дата 11.9.2015, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.9.2015

Репутация: нет
Всего: нет



Цитата(Samotnik @ 8.9.2015,  19:44)
ну что? есть новости? Я думаю так, что если поддомен утсановит куки для главного домена, то всё заработает.

нет, еще нету новостей.. на сервере пока не пробовал, коллега в отпуске.. а у меня доступа к серверу нет)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1348 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.