【问题标题】:AppEngine Content-Encoding header doesn't appearAppEngine Content-Encoding 标头未出现
【发布时间】:2015-04-28 06:55:57
【问题描述】:

我正在尝试通过 AppEngine 发送压缩文件,我的功能是

func handleWebGLRequest(w http.ResponseWriter, r *http.Request) {
    c := appengine.NewContext(r)

    blobKey, err := blobstore.BlobKeyForFile(c, "/gs/<path>/WebGL.datagz")
    if err != nil {
        fmt.Fprintf(w, "Problem: cannot find WebGL.data")
        return
    }

    w.Header().Set("Content-Type", "blah/blah/application/octet-stream")
    w.Header().Set("Content-Encoding", "gzip")
    blobstore.Send(w, blobKey)
}

文件已发送,内容类型正确显示在“blah/blah/application/octet-stream”的响应标头中,但 Content-Encoding 永远不会出现在响应标头中,这(我认为)是原因我遇到的其他问题。

有谁知道为什么它不起作用?

(以防万一 - 我正在使用 chrome 检查器查看响应标头,在这里,源未解析

HTTP/1.1 200 正常 内容类型:blah/blah/application/octet-stream 传输编码:分块 日期:2015 年 4 月 28 日星期二 06:50:09 GMT 服务器:谷歌前端 替代协议:80:quic,p=1)

非常感谢

【问题讨论】:

    标签: google-app-engine blobstore response-headers content-encoding


    【解决方案1】:

    您无法控制此标头,服务器实际上会尽可能频繁地提供 gzip 压缩的内容,只要它们确信浏览器会支持它。

    How do I serve compressed content?

    Google App Engine 会尽最大努力将 gzip 压缩的内容提供给支持它的浏览器。利用此方案是自动的,无需对应用程序进行修改。

    【讨论】:

    • 这是有道理的。为了补充答案,在 Cloud Storage 上,您可以控制 Content-Encoding(Cloud Storage 上的文件可以处于压缩或非压缩状态并保持这种状态,您必须自己设置元数据,包括内容编码)。可以重定向到它,但在大多数情况下会产生跨域策略问题
    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 2020-07-15
    • 2011-11-09
    • 2017-10-03
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    相关资源
    最近更新 更多