Модераторы: 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   Вверх
vthm3
Дата 15.9.2015, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Samotnik, 

установил програму на сервер..

возвращает куки из сервера c доменом .server.com, они установились....
(когда запускал програму на локалохосте, то куки с доменом .server.com не записывались)

но йомайо... оно все равно не работает... и просит авторизация когда я обращаюсь к нему опять.....

как мне быть???????????






и еще момент...
хотя домены и одинаковые, но один у меня - app.server.com, а второй - sharepoint.server.com:80

что мне делать с этим 80.. как его записать, запомнить в куки.. или чего с ним делать????





и еще такой нюанс...
Захожу на sp.server.com.. получаю в окне sharepoint и все что мне там нужно.. делаю авторизацию, получаю куки.. все хорошо работает)
куки вижу в инструменти разработчиков в хроме, например...

теперь, в том же инструменте, удалаю все куки, которые вернул мне sp.server.com, обновляю страничку, и оно все равно работает, и все равно я авторизирован остаюсь)
если нажимаю кнопку "выйти", появляется окно, в котором пишет "для того чтобы вийте из пользователя, нужно также закрыть браузер, только тогда вы окончательно выйдете из системы"

что это за фигня? как это все работает?

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


Super star !
****


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

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



vthm3, Есть еще такое понятие как сессия. Порт 80 - порт по умолчанию, ничего с ним не делай. Может всё же сессия тоже шарится между поддоменами?

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


Новичок



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

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



Цитата(Samotnik @ 16.9.2015,  23:14)
vthm3, Есть еще такое понятие как сессия. Порт 80 - порт по умолчанию, ничего с ним не делай. Может всё же сессия тоже шарится между поддоменами?

а как мне отслеживать эти сессии, которые установлены с sp.server.com..??

и как сделать чтобы эти сессии были видимы из app.server.com (ну согласно задания выше)...

я не знаю что именно происходит с sp.server.com (я интересуюсь как ето может работать)... 
если посмотреть на информацию в инструменте для разработчиков в хроме, то там где "session storage" i "local storage" все пусто (никакие параметры не записаны). Есть только параметры, которые записаны в cookies.



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




и какие еще есть варианты авторизироваться на sharepoint сайте из java программы автоматически?
выше я делал невидимую ntlm авторизацию, получал куки, и по идее оно должно было работать.. 
а какие принципиально другие есть варианты чтобы можно было авторизироватся на sharepoint сервере чтобы получить доступ, и чтобы пользователю не приходилось вводить логи и пароль вручную. Если есть возможность как отключить эту авторизацию в sharepoint, было бы это идеальное решение... кто знает еще какие варианты??

Это сообщение отредактировал(а) vthm3 - 17.9.2015, 17:14
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1023 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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