Интересные UTF-8 Yahoo файлы загрузки заголовков - PullRequest
2 голосов
/ 09 октября 2008

В моей компании работает служба веб-почты, и мы пытались диагностировать проблему с загрузками Word, которые не открывались автоматически - такая же загрузка файла * .doc из Yahoo Mail открывалась, но одна из наших - нет.

В ходе исследования заголовков мы увидели, что это исходит от Yahoo:

content-disposition attachment; filename*="utf-8''word document.doc";

В то время как наши заголовки были такими:

content-disposition attachment; filename="word document.doc";

Что именно Yahoo делает с дополнительной звездочкой и обозначением utf-8 ''?

Ответы [ 2 ]

2 голосов
/ 09 октября 2008

Я думаю, что правильный ответ на это в RFC 2231:

Звездочки ("*") используются повторно, чтобы обеспечить показатель того, что язык и информация о наборе символов присутствует и используется кодировка. одинарная кавычка ("'") используется для разделения набора символов и языка информация в начале значения параметра. Знаки процента ("%") используются в качестве флага кодирования, что соответствует RFC 2047.

В частности, звездочка в конце имени параметра действует как индикатор того, что набор символов и информация о языке могут отображаться в начало значения параметра. Одна цитата используется для отделить набор символов, язык и информацию о фактических значениях в строка значения параметра и знак процента используется для пометки октеты, закодированные в шестнадцатеричном формате. Например:

    Content-Type: application/x-stuff;
     title*=us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A
0 голосов
/ 09 октября 2008

Какой Mime-Type вы используете?

Звездочка требуется согласно RFC 2183 (http://www.ietf.org/rfc/rfc2183.txt):

В расширенной нотации BNF [RFC 822], Content-Disposition поле заголовка определяется следующим образом:

 disposition := "Content-Disposition" ":"
                disposition-type
                *(";" disposition-parm)

 disposition-type := "inline"
                   / "attachment"
                   / extension-token
                   ; values are not case-sensitive

 disposition-parm := filename-parm
                   / creation-date-parm
                   / modification-date-parm
                   / read-date-parm
                   / size-parm
                   / parameter

 filename-parm := "filename" "=" value

 creation-date-parm := "creation-date" "=" quoted-date-time

 modification-date-parm := "modification-date" "=" quoted-date-time

 read-date-parm := "read-date" "=" quoted-date-time

 size-parm := "size" "=" 1*DIGIT

 quoted-date-time := quoted-string
                  ; contents MUST be an RFC 822 `date-time'
                  ; numeric timezones (+HHMM or -HHMM) MUST be used
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...