在 Discourse 帖子中点击 "Show full Post" 时出现 422 Unprocessable Entity

您好,

我非常希望能在这里得到一些帮助。我浏览了网络,但找不到与我情况相符的案例。

我正在测试 WordPress 与 Discourse 的集成。单独使用时,两者都能正常工作。然而,在使用 WordPress 插件时遇到了问题。
当我发布一篇 WordPress 文章时,插件会按预期在 Discourse 中创建一个主题。主题本身创建正确。但是,当我点击“显示完整帖子”按钮时,WordPress 文章并未展开。
在浏览器控制台中,我看到了如下错误:

Request URL: http://forum.sadzinica.pl/posts/19/expand-embed
Request Method: GET
Status Code: 422 Unprocessable Entity
Remote Address: 192.168.0.15:80
Referrer Policy: strict-origin-when-cross-origin
Cache-Control: no-cache, no-store
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Date: Tue, 12 Jan 2021 09:07:49 GMT
Referrer-Policy: strict-origin-when-cross-origin
Server: nginx/1.14.2
Set-Cookie: __profilin=REMOVED; path=/; HttpOnly; SameSite=Lax
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-Discourse-Route: posts/expand_embed
X-Discourse-Username: admin
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: b904c2d5-2088-4193-be0c-f36b497d716e
X-Runtime: 0.021514
X-XSS-Protection: 1; mode=block
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-Language: pl-PL,pl;q=0.9,en-GB;q=0.8,en;q=0.7,de-DE;q=0.6,de;q=0.5,en-US;q=0.4,it;q=0.3,es;q=0.2,ro;q=0.1,it-IT;q=0.1
Connection: keep-alive
Cookie: __profilin=REMOVED; _t=REMOVED; _forum_session=I-REMOVED-IT
Discourse-Logged-In: true
Discourse-Present: true
Discourse-Track-View: true
Host: forum.sadzinica.pl
Referer: http://forum.sadzinica.pl/t/zebranie-wiejskie-w-sprawie-x/15/3
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
X-CSRF-Token: 1ke5PaosmJ5gYeRpUs6ZkMWD+H4zaovMmVr3JPPNXeuidSmhdD2FmkeBaTgrH0TUuU+GrH/+OV0c338W/4RbjA==
X-Requested-With: XMLHttpRequest

以及一个 jQuery 错误:

XMLHttpRequest.send | @ | includes.js?v=10da95…f1bd50fe50ed714:819
  | send | @ | _ember_jquery-189e46…649161a18d.js:10113
  | ajax | @ | _ember_jquery-189e46…6649161a18d.js:9696
  | i | @ | _application-525b557…c2ebdfb8509.js:9229
  | (anonymous) | @ | _ember_jquery-189e46…649161a18d.js:72238
  | n | @ | _ember_jquery-189e46…649161a18d.js:72760
  | i | @ | _application-525b557…c2ebdfb8509.js:9242
  | expand | @ | _application-525b557…2ebdfb8509.js:16991
  | expandFirstPost | @ | _application-525b557…2ebdfb8509.js:78560
  | (anonymous) | @ | _application-525b557…2ebdfb8509.js:82798
  | value | @ | _application-525b557…2ebdfb8509.js:82756
  | value | @ | _application-525b557…2ebdfb8509.js:82794
  | click | @ | _application-525b557…2ebdfb8509.js:78431
  | (anonymous) | @ | _application-525b557…2ebdfb8509.js:75834
  | (anonymous) | @ | _application-525b557…2ebdfb8509.js:75733
  | value | @ | _application-525b557…2ebdfb8509.js:82756
  | k | @ | _application-525b557…2ebdfb8509.js:75732
  | (anonymous) | @ | _application-525b557…2ebdfb8509.js:75833
  | dispatch | @ | _ember_jquery-189e46…6649161a18d.js:5443
  | d.handle | @ | _ember_jquery-189e46…6649161a18d.js:5247

我的环境设置:WordPress 和 Discourse 安装在 Ubuntu 20.04 LTS 虚拟机中,该虚拟机运行在 Linux 系统上的 VirtualBox 上。我在我自己的本地网络中进行测试,使用自定义 DNS 将请求指向托管 VirtualBox 虚拟机的主机。我使用了两个 Nginx 反向代理。第一个位于 Ubuntu 虚拟机中,负责将请求重定向到/来自虚拟机 Docker 容器的端口或 Unix 套接字。
然后,VirtualBox 将流量转发到主机上的 8000 端口,接着另一个 Nginx 作为反向代理,将其映射到主机机器的 80 端口(即托管虚拟机的宿主机器)。
我进行此测试是为了模拟真实环境,因为当我在本地完成所有设置后,我打算在 VPS 中同时运行 WordPress 和 Discourse。

如果您需要更多信息,请告知。谢谢!

你好 @dgtal1,抱歉回复晚了。你目前还在遇到这个问题吗?另外,是仅这一篇帖子有问题,还是所有帖子都如此?

我怀疑这与 WordPress 帖子本身的内容有关,该内容似乎正在触发某个请求。

抱歉打扰了旧帖,但我也遇到了这个问题,不过是在 Drupal 中,而不是 WordPress。我之前禁用了内容安全策略来尝试解决这个问题,但现在点击“显示完整帖子”按钮时看到了 422 Unprocessable Entity 错误。这个损坏的按钮功能似乎影响了所有已发布的文章,而不仅仅是新文章。启用截断的旧文章也受到影响。

我的安装位于 Cloudflare 之后,但我没有看到任何安全事件日志表明资源被 WAF 区域或托管规则阻止。我真的不知道接下来该如何解决这个问题。

@spectrum,您能否另外开启一个 Support 主题,并提供更多详细信息,包括:

  1. 一些日志(例如此主题中的第一个帖子)。
  2. 如果可能,提供指向 Discourse 和 Drupal 相关帖子的链接。

并非所有 422 错误都相同。在上述情况下,这很可能是由于帖子的内容引起的。

*请注意,我已将您的帖子从 Support > WordPress 移至 Support,因为这与 WordPress 或 WP Discourse 插件无关。

1 个赞

这是已在此主题中解决的同一个问题吗 @spectrum

2 个赞

是的,正是如此!抱歉耽误了。我确认这已经可以正常工作了,因为我们的服务器已解除对某个 IP 地址的封锁。我忘了在排查问题时也曾在这个帖子里求助过,所以很抱歉!希望这能为遇到类似问题的其他人指明正确的方向。

2 个赞