如何使用谷歌应用引擎为AJAX请求提供gzip内容

How to serve gzipped content for AJAX requests with Google App Engine?

本文关键字:请求 gzip 内容 AJAX 何使用 谷歌 应用 引擎      更新时间:2023-09-26

我正在为我在谷歌应用引擎上的服务托管构建一个API。这个API将提供大量的数据,所以我希望它被gzipped。我在文档中找到了关于如何将GAE设置为gzip数据的部分,方法是将"User Agent"answers"Accept Encoding"都设置为"gzip"。测试了这个,工作正常(尽管看起来有点生气…)。

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自动gzip编码的XMLHttpRequest响应,并让浏览器自动解码?这可能吗?我假设AJAX请求可以自动解码gzip内容,如果其他类型的浏览器请求可以的话。但我能看到的唯一解决方案是,服务器必须手动编码响应,浏览器客户端必须手动解码,但这似乎是次优的。

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

应用程序引擎接受编码JQuery Ajax请求:更改用户代理

您不需要调整这些。浏览器应该自己设置这些标题。如果浏览器没有为gzip设置Accept-Encoding标头,则可能是浏览器不支持gzip,在这种情况下,它不会自动解码。

简单的答案是,基本上你什么都不需要做。