【问题标题】:Interesting UTF-8 Yahoo File Download Headers有趣的 UTF-8 雅虎文件下载标头
【发布时间】:2010-09-16 06:08:12
【问题描述】:

我的公司运行网络邮件服务,我们试图诊断 Word 下载无法自动打开的问题 - 从 Yahoo Mail 下载的同一个 *.doc 文件会打开,但我们的不会打开。

在调查标头的过程中,我们发现这来自雅虎:

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

而我们的标题是这样的:

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

Yahoo 究竟在用额外的星号和 utf-8'' 指定做什么?

【问题讨论】:

    标签: http-headers download


    【解决方案1】:

    我认为正确答案在 rfc 2231 中:

    星号(“*”)被重复使用以提供语言和 存在字符集信息并且正在使用编码。一种 单引号(“'”)用于分隔字符集和语言 参数值开头的信息。百分号 ("%") 用作编码标志,符合 RFC 2047。

    具体来说,参数名称末尾的星号充当 指示字符集和语言信息可能出现在 参数值的开头。单引号用于 将字符集、语言和实际值信息分开 参数值字符串,百分号用于标记 以十六进制编码的八位字节。例如:

        Content-Type: application/x-stuff;
         title*=us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A
    

    【讨论】:

      【解决方案2】:

      您使用的是什么 Mime-Type?

      根据 RFC 2183 (http://www.ietf.org/rfc/rfc2183.txt),星号是必需的:

      在 [RFC 822] 的扩展 BNF 表示法中,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
      

      【讨论】:

      • 星号表示从 0 到无穷大的重复,不是文字字符
      • > 你用的是什么 Mime-Type?我们使用了正确的 Mime-Type,application/msword。通过提供正确的文件大小(不正确)解决了原始下载问题。
      猜你喜欢
      • 2012-10-20
      • 2020-11-21
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 2019-09-12
      • 1970-01-01
      • 2020-02-24
      • 2018-09-24
      相关资源
      最近更新 更多