simon
1
在我尝试连接本地 Discourse 和 WordPress 站点时,过去一段时间我一直收到以下错误:
cURL error 61: Unrecognized content encoding type. libcurl understands deflate, gzip, br content encodings.
问题似乎是,在本地开发环境中,Discourse 设置了以下标头:
content-encoding: null
我的本地 Apache 服务器无法处理 content-encoding: null 标头。从我的 wp shell 中,对 wp_remote_get("http://localhost:4200/site.json") 的请求会因我上面发布的错误而失败,而对 Discourse 生产站点(例如 wp_remote_get("https://meta.discourse.org/site.json"))的请求则可以正常工作。
我临时的解决方法是在我的本地 Discourse 安装中注释掉这一行:https://github.com/discourse/discourse/blob/main/app/assets/javascripts/bootstrap-json/index.js#L330。但这并不是一个很好的解决方案。有人遇到过连接到本地运行的 Discourse 站点的类似问题吗?有人建议如何配置本地 Apache 服务器以接受具有 content-encoding: null 标头的响应吗?
我希望我能确切地知道问题是什么时候开始的。可能自从 Discourse 开始设置 content-encoding: null 标头以来就一直存在。
编辑:该问题发生在 Ubuntu 22.04.1 上。Curl 版本:curl 7.81.0。PHP 版本:8.1.2。这并不紧急,但我很好奇发生了什么。
4 个赞
angus
(Angus McLeod)
2
很有趣!这让我想起了一个模糊的记忆,但一时想不起来。不过,我想我的第一个问题是,Discourse 在哪里以及为什么将 content-encoding 标头设置为 null?
这确实似乎是一个“仅限开发”的问题。这看起来与之相关
1 个赞
simon
3
随着代码的更新,行号也会发生变化。供将来参考,在使用 WP Discourse 插件进行本地开发时,我必须注释掉 Discourse 代码中的这一行是:
res.set("content-encoding", null);
在没有完全追踪 Discourse 代码中发生了什么的情况下,注释掉那一行似乎会导致 Discourse 对响应进行 gzip 压缩:
["content-encoding"]=>
array(1) {
[0]=>
string(4) "gzip"
}
这在我的开发环境中似乎没有引起任何问题。
2 个赞
simon
4
每次我想连接本地 WordPress 和 Discourse 站点时,都必须重新讨论这个话题。
供我自己参考,res.set("content-encoding", null); 行现在位于:
注释掉该行可以解决问题。
如果其他人没有遇到此问题,可能是我本地开发环境配置有误。将“content-encoding”设置为 null 仍然看起来是错误的。它不是该标头的有效值。
angus
(Angus McLeod)
5
实际上,我最近在测试 WordPress ActivityPub 插件和 Discourse 本地集成时,也在 ActivityPub 插件的上下文中遇到了这个问题。
我已将类别更改为 Dev,因为我认为这只是 discourse/discourse 的开发问题,并且只会在 PHP 远程(因为 PHP 请求函数处理事物的方式或类似原因)中显现。
我现在记不清了,但我认为我得出的结论是,这在生产环境中会在其他地方设置?我明天会努力回忆起来。
1 个赞