Здравствуйте apache-talk,
делаю запрос к хосту softbn.ru:
GET /p/c.cgi?b=222&s=1&o=-180 HTTP/1.1
Host: softbn.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ru-RU; rv:1.7.5) Gecko/20041108 Firefox/1.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://softbn.ru/p/0.cgi?s=1&n=6&o=-180&r=279774978
Cookie: c=52912
получают вот такой ответ:
HTTP/1.1 302 Found
Date: Tue, 23 Nov 2004 11:54:11 GMT
Server: Apache
Set-Cookie: s=1; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
Set-Cookie: b=222; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
Set-Cookie: ps=0; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
Set-Cookie: pa=9; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
P3P: policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"
Location: http://www.best-hosting.ru/dedicated_server.asp
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
309
HTTP/1.1 302 Found
Date: Tue, 23 Nov 2004 11:54:11 GMT
Server: Apache
Set-Cookie: s=1; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
Set-Cookie: b=222; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
Set-Cookie: ps=0; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
Set-Cookie: pa=9; domain=.softbn.ru; path=/p/; expires=Fri Nov 18 11:54:11 2005
Location: http://www.best-hosting.ru/dedicated_server.asp
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="http://www.best-hosting.ru/dedicated_server.asp">here</A>.<P>
</BODY></HTML>
0
В чём может быть причина такого странного ответа? И откуда в ответе
взялись 309 в середине и 0 c 0D0A в конце? Видно что какой-то модуль
или что-то ещё дублирует заголовок, приписывая дефолтную кодировку и
удаляя политику для кук. Как избавться от этого?
Всё работает по FreeBSD 2.5.1, версия Апача поседняя, последняя версия
mod_deflate.
Скрипт, который генерит ответ, приблизительно следующий:
#!/usr/local/bin/perl -w
use strict;
use POSIX qw(locale_h);
use locale;
setlocale(LC_CTYPE, "ru_SU.WINDOWS-1251");
use Apache::Request();
use Apache::Constants qw(OK REDIRECT);
use Apache::Cookie;
my $r=Apache->request();
$r->headers_out->add( 'P3P'=> 'policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"');
my $cookie = Apache::Cookie->new($r,
-name=>'s',
-value=>1,
-expires=>scalar(gmtime(time+12*30*60*60*24)),
-path=>'/p/',
-domain=>'.softbn.ru');
$cookie->bake;
$cookie = Apache::Cookie->new($r,
-name=>'b',
-value=>22,
-expires=>scalar(gmtime(time+12*30*60*60*24)),
-path=>'/p/',
-domain=>'.softbn.ru');
$cookie->bake;
$cookie = Apache::Cookie->new($r,
-name=>'ps',
-value=>0,
-expires=>scalar(gmtime(time+12*30*60*60*24)),
-path=>'/p/',
-domain=>'.softbn.ru');
$cookie->bake;
$cookie = Apache::Cookie->new($r,
-name=>'pa',
-value=>9,
-expires=>scalar(gmtime(time+12*30*60*60*24)),
-path=>'/p/',
-domain=>'.softbn.ru');
$cookie->bake;
undef $cookie;
$r->headers_out->set(Location => $banner_link);
$r->status(REDIRECT);
$r->send_http_header;
#записываем клик в БД
#...
return OK;
Или у меня скрипт неверно отрабатывает?
Похожая ситуация, только ответ не дублируется, а в него вставляется
какая-то цифра непонятная:
Запрос к хосту softbn.ru:
GET /p/0.cgi?s=1&n=6&o=-180&r=220386174 HTTP/1.1
Host: softbn.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; ru-RU; rv:1.7.5) Gecko/20041108 Firefox/1.0
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://softsearch.ru/catalog/utility/disk/
Cookie: c=52912
получаем ответ:
HTTP/1.1 200 OK
Date: Tue, 23 Nov 2004 11:55:41 GMT
Server: Apache
Pragma: no-cache
Cache-control: no-cache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=windows-1251
Expires: Tue, 23 Nov 2004 11:55:41 GMT
d66
<head></head>
<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" scroll="no"><nobr>
...
</nobr></body></html>
0
Опять к концу приписался ноль и парочка 0D0A за ним, а перед контентом
'd66' . Что это может быть?
С уважением,
Михаил Монашёв, SoftSearch.ru
Member of Independent Software Developers Forum (ISDEF)
mailto:postmaster@xxxxxxxxxxxxx
ICQ# 166233339
http://softsearch.ru/
Без бэкапа по жизни.