关于使用 php 来设置 http 头的出现的问题。我使用php 来测试 HTTP header 头时候发现,假如我按以下代码来设置相应头的话,却发生了难以理解的错误,谁能帮忙解释一下其中的原因?
而且除了以上的问题外,我按以下的代码来设置响应头,结果在页面上只有最后一个响应头能够显示,其他被覆盖,但是原来的Content-Encoding:gzip 这个怎么都不会被覆盖
下面补充问题说明,如果显式声明为 gzip 编码,则会有下面的无法访问此网站的错误。
相关服务器配置代码
关于使用 php 来设置 http 头的出现的问题。我使用php 来测试 HTTP header 头时候发现,假如我按以下代码来设置相应头的话,却发生了难以理解的错误,谁能帮忙解释一下其中的原因?
而且除了以上的问题外,我按以下的代码来设置响应头,结果在页面上只有最后一个响应头能够显示,其他被覆盖,但是原来的Content-Encoding:gzip 这个怎么都不会被覆盖
下面补充问题说明,如果显式声明为 gzip 编码,则会有下面的无法访问此网站的错误。
相关服务器配置代码
我这边测试了一下第二个问题, 除非 ·header· 第二个参数设置为 ·false· , 否则都会覆盖。
至于第一个问题, 你是使用什么方式请求的? 我这边用浏览器请求, 可以看到请求头 ·Accept-Encoding:gzip, deflate, br· , 这是 ·Chrome· 浏览器支持的编码格式, 建议看一下你的请求支持什么编码格式传输正文
3 回答2.3k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
第一个问题,浏览器是会根据你的Content-Encoding值对响应进行解码,你传的值(123,none)不正确当然出现乱码,然后gzip是因为你的响应体并没有做gzip压缩处理,而浏览器却对你的响应体做了解压处理,那肯定是解压失败就无法访问咯。
第二个问题参战楼上。
多个Content-Encoding头情况,浏览器按照从上往下的顺序来解码

这里响应头写反顺序则报错