perl и header_out
Igor Sysoev
is at rambler-co.ru
Sun Dec 9 23:41:54 MSK 2007
On Sun, Dec 09, 2007 at 10:32:15PM +0200, deniswork at uzvik.kiev.ua wrote:
> > Из перла нужно делать как раз $r->internal_redirect().
> > X-Accel-Redirect работает только в proxy и fastcgi, делает
> > именно internal_redirect().
>
> Спасибо!
>
> Подскажите как правильно передать хедеры,
> Почему хедери посылаються как файл?
Потому что сначала посылается ответ:
$r->send_http_header
а потом добавляется ещё заголовков:
$r->header_out()
Нужно так:
$r->variable("limit_rate", "16k");
$r->header_out("Content-Disposition", "attachment; filename=\"file.txt\"");
$r->send_http_header("application/octet-stream; charset=cp1251");
$r->internal_redirect("/dl/file.tx");
return OK;
> sub dl {
> my $r = shift;
>
> $r->send_http_header;
>
> $r->header_out("Content-type", "application/octet-stream; charset=cp1251");
> $r->header_out("Content-Disposition", "attachment; filename=\"file.txt\"\n");
> $r->header_out("X-Accel-Limit-Rate","16384\n\n");
>
> $r->internal_redirect("/dl/file.tx");
> return OK;
> }
>
> На выходе получаем:
>
> $ wget -S http://xxx
> HTTP request sent, awaiting response...
> HTTP/1.1 200 OK
> Server: nginx/0.5.33
> Date: Sun, 09 Dec 2007 20:35:38 GMT
> Content-Type: application/x-rar-compressed
> Connection: close
> Length: unspecified [application/x-rar-compressed]
>
> [ <=> ] 4,123,916 --.--K/s
>
> 22:35:38 (72.91 MB/s) - `file.txt' saved [4123916]
>
> А потом
> $ cat file.txt
>
> HTTP/1.1 200 OK
> Server: nginx/0.5.33
> Date: Sun, 09 Dec 2007 20:35:38 GMT
> Content-Type: application/x-rar-compressed
> Content-Length: 4123542
> Last-Modified: Thu, 08 Nov 2007 02:02:10 GMT
> Connection: close
> Content-type: application/octet-stream; charset=cp1251
> Content-Disposition: attachment; filename="file.txt"
>
> X-Accel-Limit-Rate: 16384
>
>
> Accept-Ranges: bytes
>
> ---file_content_here--
>
>
>
--
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list