在我的Node.js应用程序中,我有一个路径,我从数据库(Postgres)获取大量JSON数据并在响应中以压缩格式发送它。我正在使用Zlib
模块来gzip
这些数据。我在发送回复之前设置了Content-Type: application/gzip
和Content-Encoding: gzip
。现在所有这些设置都适用于Chrome和Safari浏览器(成功解压缩数据),但由于某种原因,这在Firefox中不起作用。请求标头包含Accept-Encoding: gzip, deflate
。
在浏览器(Firefox)控制台中,我看到以下错误
Attempt to set a forbidden header was denied: Accept-Encoding
和
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
有人可以指导我这个问题是什么,我该如何解决?谢谢!
答案 0 :(得分:0)
好的,我会用适合我的方式回答我的问题。
在服务器端,我改变了压缩数据的方式。我使用deflate
模块的Zlib
方法而不是gzip
。还使用这些值更改了响应标头。
Content-Encoding: deflate
和Content-Type: application/deflate
我仍然不确定为什么gzip
不起作用(或者至少对我不起作用),但由于时间限制,我现在要使用deflate
。
此外,gzip
和deflate
使用相同的压缩算法,deflate
编码和解码速度更快。我希望这有帮助,如果我在任何地方出错,请纠正我。谢谢!
答案 1 :(得分:0)
在现代浏览器中,根据https://developer.mozilla.org/en-US/docs/Web/API/Headers,
出于安全原因,某些标头只能由用户代理控制。这些标头包括禁止的标头名称和禁止的响应标头名称。
Forbidden header names包含“接受编码”。