【问题标题】:How to serve gzipped content for AJAX requests with Google App Engine?如何使用 Google App Engine 为 AJAX 请求提供压缩内容?
【发布时间】:2023-03-10 04:55:01
【问题描述】:

我正在为我在 Google App Engine 上托管的服务构建一个 API。这个 API 将提供大量数据,所以我希望它被压缩。我发现文档中有关如何将 GAE 转换为 gzip 数据的部分是将“User-Agent”和“Accept-Encoding”都设置为“gzip”。对此进行了测试,工作正常(虽然看起来有点 hacky...)。

https://developers.google.com/appengine/docs/python/#Responses

但是为使用 API 而构建的其中一个客户端正在浏览器中运行,并且 XMLHttpRequest 似乎无法设置这些标头,至少在 Chrome 中是这样。尝试时出现错误:

Refused to set unsafe header "User-Agent"
Refused to set unsafe header "Accept-Encoding"

如果有的话,Javascript 客户端可以做些什么来从 Google App Engine 获得针对 XMLHttpRequest 的自动 gzip 编码响应,并让浏览器自动对其进行解码?这甚至可能吗?如果其他类型的浏览器请求可以,我会假设 AJAX 请求可以自动解码 gzip 内容。但我能看到的唯一解决方案是服务器必须手动对响应进行编码,而浏览器客户端必须手动对其进行解码,但这似乎并不理想。

我已经找到了这些答案,但它们似乎没有提供任何解决方案:

App Engine Accept-Encoding JQuery Ajax Request: Change User-Agent

【问题讨论】:

    标签: javascript google-app-engine


    【解决方案1】:

    您不需要调整这些。浏览器应自行设置这些标头。如果浏览器没有为gzip设置Accept-Encoding头,可能是浏览器不支持gzip,不会自动解码。

    简短的回答是,基本上你什么都不用做。

    【讨论】:

    • 他们是。默认情况下,Chrome 27.0.1453.116 为此类 AJAX 请求提供标头“gzip,deflate,sdch”,Firefox 22 提供标头“gzip, deflate”。但 Google App Engine 不会返回它们的 gzip 压缩包。
    猜你喜欢
    • 2018-01-19
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多