关于HTTP Header 头的一个奇怪问题
关于使用 php 来设置 http 头的出现的问题。我使用php 来测试 HTTP header 头时候发现,假如我按以下代码来设置相应头的话,却发生了难以理解的错误,谁能帮忙解释一下其中的原因?
而且除了以上的问题外,我按以下的代码来设置响应头,结果在页面上只有最后一个响应头能够显示,其他被覆盖,但是原来的Content-Encoding:gzip 这个怎么都不会被覆盖
下面补充问题说明,如果显式声明为 gzip 编码,则会有下面的无法访问此网站的错误。
相关服务器配置代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一个问题,浏览器是会根据你的Content-Encoding值对响应进行解码,你传的值(123,none)不正确当然出现乱码,然后gzip是因为你的响应体并没有做gzip压缩处理,而浏览器却对你的响应体做了解压处理,那肯定是解压失败就无法访问咯。
第二个问题参战楼上。
多个Content-Encoding头情况,浏览器按照从上往下的顺序来解码
这里响应头写反顺序则报错
我这边测试了一下第二个问题, 除非 ·header· 第二个参数设置为 ·false· , 否则都会覆盖。
至于第一个问题, 你是使用什么方式请求的? 我这边用浏览器请求, 可以看到请求头 ·Accept-Encoding:gzip, deflate, br· , 这是 ·Chrome· 浏览器支持的编码格式, 建议看一下你的请求支持什么编码格式传输正文