X-Accel-Redirect русские имена файлов

Maxim Dounin mdounin at mdounin.ru
Wed May 6 01:17:32 MSD 2009


Hello!

On Tue, May 05, 2009 at 07:54:58PM +0400, Kirill A. Korinskiy wrote:

> At Tue, 5 May 2009 18:33:13 +0400,
> Igor Sysoev <is at rambler-co.ru> wrote:
> 
> > > > 
> > > > Выдавать "X-Accel-Redirect: /content/mp3download/Мара - самолеты.mp3".
> > > > 
> > > 
> > > А что мешает сделать urlencode для заголовков backend?
> > 
> > А зачем ? Чтобы поломать существующую совместимость ?
> > 
> 
> прочитал внимательно rfc 2616. Да, я не прав. Имя заголовка, да, не
> может быть 8 битным, а вот значение — вполне.
> 
> Записал себе на память: http://catap.ru/blog/2009/05/05/http-russian-letters-on-http-headers/

Не совсем так.  RFC2616 в этом месте внутренне противоречив - т.к. 
с одной стороны ссылается на RFC822 (который не позволяет ничего 
кроме ASCII), а с другой стороны приводит грамматику,
допускающую использование 8-битных символов в содержимом 
заголовков (очевидно никак не определяя, куда именно следует 
засунуть 8-й бит).

В httpbis это место обросло новой грамматикой и человекочитаемым 
абзацем про то что именно следует делать с 8-битными заголовками
(http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-06#section-4.2):

     message-header = field-name ":" OWS [ field-value ] OWS
     field-name     = token
     field-value    = *( field-content / OWS )
     field-content  = *( WSP / VCHAR / obs-text )

   Historically, HTTP has allowed field-content with text in the ISO-
   8859-1 [ISO-8859-1] character encoding (allowing other character sets
   through use of [RFC2047] encoding).  In practice, most HTTP header
   field-values use only a subset of the US-ASCII charset [USASCII].
   Newly defined header fields SHOULD constrain their field-values to
   US-ASCII characters.  Recipients SHOULD treat other (obs-text) octets
   in field-content as opaque data.

Maxim Dounin





More information about the nginx-ru mailing list