Вверх ↑
Этот топик читают: Гость
Ответов: 64
Рейтинг: 0
#151: 2019-06-27 11:30:42 ЛС | профиль | цитата
Netspirit писал(а):
Ну, так и должно быть. Данные на PostData нужно подавать в виде
name1=value1
name2=value2
и т.д.

Тогда через Charset надо прогонять только "valueN". Не знаю откуда ты берешь данные, но, например, можно использовать FormatStr со строкой
name1=%1
name2=%2
и т.д.

а на верхние точки FormatStr подавать данные (например, при помощи EventFromData), уже обработанные Charset.

Ок, Спасибо за помощь и за сам модуль HTTPClient!
карма: 0

0
Ответов: 64
Рейтинг: 0
#152: 2019-06-27 16:14:37 ЛС | профиль | цитата
Как заставить CookieManager сохранять cookie из заголовка set-cookie?
Add(MainForm,15157216,315,203)
{
Width=579
Height=527
Caption="HTTPClient - Cookie"
Position=1
}
Add(Button,12479344,434,231)
{
Left=10
Top=60
Width=140
Height=25
Caption="Выполнить"
link(onClick,5102370:doEvent1,[])
}
Add(Memo,2568247,826,210)
{
Left=10
Top=100
Width=550
Height=250
ScrollBars=3
}
Add(Message,363691,679,259)
{
Caption="Ошибка запроса"
Icon=1
}
Add(DoData,7347341,644,210)
{
link(onEventData,9377522:doEvent1,[])
link(Data,2427935:getVar,[])
}
Add(Hub,9377522,714,210)
{
InCount=2
OutCount=1
link(onEvent1,2568247:doAdd,[])
}
Add(CookieManager,16633777,539,434)
{
Name="Cook"
Point(doDelete)
Point(onChange)
link(onChange,3907832:doWork,[])
}
Add(Hub,5102370,490,231)
{
link(onEvent1,8936422:doWork,[])
link(onEvent2,6023390:doLoadString,[])
}
Add(LineBreakEx,8936422,525,231)
{
Caption="clear"
}
Add(LineBreakEx,2111794,756,217)
{
Caption="clear"
Type=1
link(OnEvent,2568247:doClear,[])
}
Add(StringTableMT,6990886,637,476)
{
Left=10
Top=375
Width=550
Height=115
Hint="Нажмите Delete для удаления выбранной строки"
Columns=#11:Протокол=30|7:Хост=90|6:Имя=80|12:Значение=100|14:Хранить до=200|7:Путь=80|
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(Index)
Point(onKeyDown)
link(onKeyDown,9540469:doCompare,[])
}
Add(ArrayEnum,8557589,546,525)
{
link(onItem,6990886:doAdd,[(597,531)(597,482)])
link(Array,16633777:List,[])
}
Add(Hub,14417105,490,518)
{
link(onEvent1,6990886:doClear,[(519,524)(519,489)])
link(onEvent2,8557589:doEnum,[])
}
Add(InfoTip,5114647,420,403)
{
Info=#26:Отображение доступных куки|
Width=414
Height=228
}
Add(LineBreak,16308820,490,462)
{
Caption="del"
Color=8421376
link(Out,16633777:doDelete,[])
Primary=[10680356,301,91]
}
Add(DoData,16059216,651,553)
{
link(onEventData,14177706:doEvent1,[])
link(Data,6990886:Index,[])
}
Add(LineBreakEx,8436280,434,518)
{
Caption="enum"
Type=1
link(OnEvent,14417105:doEvent1,[])
}
Add(LineBreakEx,7511669,728,560)
{
Caption="enum"
}
Add(Hub,14177706,700,553)
{
link(onEvent1,10680356:In,[])
}
Add(If_else,9540469,693,483)
{
Op2=Integer(46)
link(onTrue,16178583:doMessage,[])
}
Add(Message,16178583,749,483)
{
Message="Удалить этот куки?"
Caption="Удаление"
Type=2
Icon=2
Point(onYES)
link(onYES,16059216:doData,[(793,496)(793,535)(639,535)(639,559)])
}
Add(LineBreakEx,3907832,595,441)
{
Caption="enum"
}
Add(Label,4104088,315,301)
{
Left=10
Top=355
Width=42
Height=17
Caption="Cookies"
}
Add(LineBreakEx,2427935,644,182)
{
Caption="head"
Type=2
}
Add(LineBreakEx,15402714,602,287)
{
Caption="head"
Type=3
link(_Data,6023390:RawHeaders,[])
}
Add(Edit,4213360,581,182)
{
Left=10
Top=30
Width=550
Text="http://forum.hiasm.com/forum/19"
}
Add(HTTPClient,6023390,581,238)
{
CookieManager="Cook"
Point(RawHeaders)
link(URL,4213360:Text,[])
link(onHeadersAvail,7347341:doData,[(630,244)(630,216)])
link(onFinish,9377522:doEvent2,[(699,251)(699,223)])
link(onError,363691:doMessage,[])
}
Add(Label,15666455,315,252)
{
Left=10
Top=10
Width=38
Height=17
Caption="Адрес:"
}


Редактировалось 2 раз(а), последний 2019-06-27 16:48:35
карма: 0

0
Ответов: 4010
Рейтинг: 634
#153: 2019-06-27 16:45:00 ЛС | профиль | цитата
Куда сохранять? В этой схеме он "сохраняет" - что, в табличке не отображается?
карма: 20

0
Ответов: 64
Рейтинг: 0
#154: 2019-06-27 16:50:22 ЛС | профиль | цитата
Да, в табличке не отображается, а в хедере есть.

А например с https://text.ru/ все отображается

Редактировалось 1 раз(а), последний 2019-06-27 16:54:36
карма: 0

0
Ответов: 4010
Рейтинг: 634
#155: 2019-06-27 17:02:34 ЛС | профиль | цитата
Имеем. Адрес
http://forum.hiasm.com/forum/19
пытается установить куки
Set-Cookie: PHPSESSID=t531nnl65p7b02kan59ha56e32; path=/; domain=.hiasm.com

В режиме Source=IE табличка не будет ничего отображать.

Тестирую в режиме Source=Internal.
Похоже есть какая-то проблема.

Мой алгоритм не принимает этот куки: в куки указан параметр domain=.hiasm.com, а куки получается с домена forum.hiasm.com.
Выходит что домен нижнего уровня пытается установить куки для других доменов того же уровня.
Это может быть запрещено стандартом: владелец одного сайта смог бы устанавливать куки для совсем чужих сайтов. Стандарт разрешает установить куки домену высокого уровня для доменов низкого уровня. И то с оговорками.

Редактировалось 7 раз(а), последний 2019-06-27 17:42:38
карма: 20

0
Ответов: 64
Рейтинг: 0
#156: 2019-06-27 17:07:46 ЛС | профиль | цитата
А можно как-то, обойти такие случаи?
карма: 0

0
Ответов: 4010
Рейтинг: 634
#157: 2019-06-27 17:13:58 ЛС | профиль | цитата
Сейчас пробую выяснить где ошибка - в моей реализации или так стандартом предусмотрено.

--- Добавлено в 2019-06-27 17:37:19

Во, я лоханулся! Перепутал аргументы в функции PosEx().
Открой hiCookieManager.pas.
Строка 410 должна быть:
if PosEx('.', Domain, 2) = 0 then exit;
Строка 418:
if PosEx('.', Copy(Host, 1, LH-LD)) <> 0 then exit;


Редактировалось 1 раз(а), последний 2019-06-27 17:37:19
карма: 20

0
Ответов: 64
Рейтинг: 0
#158: 2019-06-27 17:47:43 ЛС | профиль | цитата
Спасибо! Работает!
карма: 0

0
Ответов: 64
Рейтинг: 0
#159: 2019-06-27 20:37:58 ЛС | профиль | цитата
Netspirit, если сохранять cookie в файл, то с поддоменами та же проблема. Посмотрите по возможности
карма: 0

0
Ответов: 4010
Рейтинг: 634
#160: 2019-07-01 10:37:18 ЛС | профиль | цитата
Если есть какая-то проблема, то, вероятно, другая. Также надо учитывать что если в куки не указан срок действия - значит оно действительно только в текущей сессии ("до закрытия браузера"). Я следую этому поведению и не сохраняю в файл куки, у которых срок не указан или истёк на момент сохранения.

Дай минимальную схемку с проблемным адресом и сохранением/загрузкой куки - посмотрю.
карма: 20

0
Ответов: 64
Рейтинг: 0
#161: 2019-07-01 11:10:57 ЛС | профиль | цитата
Netspirit писал(а):
Дай минимальную схемку с проблемным адресом и сохранением/загрузкой куки - посмотрю.


Редактировалось 2 раз(а), последний 2019-07-06 19:06:30
карма: 0

0
Ответов: 4010
Рейтинг: 634
#162: 2019-07-01 12:36:00 ЛС | профиль | цитата
На Windows XP сайт не грузится, просмотрел в Firefox. Срок действия куки указывается как "Max-Age" - у меня обработка этого параметра не предусмотрена, может поэтому куки рассматривается как без указанного срока и не сохраняется. Подумаю.

Редактировалось 1 раз(а), последний 2019-07-01 12:36:19
карма: 20

0
Ответов: 64
Рейтинг: 0
#163: 2019-07-01 12:57:48 ЛС | профиль | цитата
Netspirit писал(а):
На Windows XP сайт не грузится, просмотрел в Firefox. Срок действия куки указывается как "Max-Age" - у меня обработка этого параметра не предусмотрена, может поэтому куки рассматривается как без указанного срока и не сохраняется. Подумаю.

Редактировалось 1 раз(а), последний 2019-07-01 12:36:19

У меня, после исправления
Netspirit писал(а):
.
Строка 410 должна быть:
if PosEx('.', Domain, 2) = 0 then exit;
Строка 418:
if PosEx('.', Copy(Host, 1, LH-LD)) <> 0 then exit;

Все грузится, вот только не сохраняются.

Редактировалось 1 раз(а), последний 2019-07-01 12:58:35
карма: 0

0
Ответов: 4010
Рейтинг: 634
#164: 2019-07-02 11:42:06 ЛС | профиль | цитата
Vandjer, попробуй этот файл.
карма: 20

0
Ответов: 64
Рейтинг: 0
#165: 2019-07-02 21:19:39 ЛС | профиль | цитата
Netspirit писал(а):
Vandjer, попробуй этот файл.

Netspirit, Огромное спасибо, теперь все работает как часики
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)