ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: perl и header_out



On Sun, Dec 09, 2007 at 10:32:15PM +0200, deniswork@xxxxxxxxxxxxx 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



 




Copyright © Lexa Software, 1996-2009.