Wordpress plugin receives avatar URL with HTTP protocol if site uses HTTPS and no CDN

AI 生成的摘要

A Wordpress plugin issue has been reported where the avatar_template value is received with an HTTP protocol instead of HTTPS, even though the Discourse site is configured to use HTTPS. fortasse suspects the issue is due to the discourse/app/serializers/post_wordpress_serializer.rb using UrlHelper.absolute object.user.avatar_template, which calls Discourse.base_url_no_prefix when a CDN is not configured.

fortasse explains that the site cannot use the “force HTTPS” checkbox due to a unique use case where the site is served on a Tor hidden service without TLS certificates, but is accessed via HTTPS on the regular internet.

codinghorror and codinghorror state that this “in between” state is not supported by Discourse.

simon suggests a workaround to customize the template functions in wp-discourse to remove avatar images from the comments_html template, referring to the wp-discourse template customization guide.

Hello! I have a Discourse installation that should only be used over HTTPS. However, since we also serve that forum on a Tor hidden service, we cannot use the “force HTTPS” checkbox in the options menu.

This is normally all well and good, except the Wordpress plugin gets an http url for the “avatar_template” value. I believe this is because discourse/app/serializers/post_wordpress_serializer.rb (and the other wordpress-related serializers) use UrlHelper.absolute object.user.avatar_template. This calls Discourse.base_url_no_prefix if a CDN is not configured (which is not on our site.) As such, the Wordpress plugin attempts to fetch (and embeds) the avatars over HTTP, which is less than ideal. I’m not terribly well versed in Ruby, so if this is completely incorrect I apologize. I can say for certain, however, that the API response from wordpress.json has a value of "avatar_template":"http://forums.whonix.org/letter_avatar_proxy/v2/letter/m/d2c977/{size}.png" even though we have the Discourse URL value in the Wordpress plugin settings as “https://forums.whonix.org”

I’m not sure if this is a bug in Discourse or the Wordpress plugin (or perhaps both) but I thought I would post it here. Please redirect me to the appropriate location if this is not it.

If you need additional details, please let me know.

This is … very bizarre. Either you are https, or you are not, there is no in between magical state.

You’re not wrong, it’s a very strange use case. The reason is that we cannot get TLS certificates for our Tor hidden service currently, so we are forced to run with an HTTP listener explicitly for the hidden service. That being said, when accessing the site of the “regular” Internet, we have HSTS and force redirects to the HTTPS version of the site.

If we use the “force HTTPS” checkbox, the Discourse instance will no longer work properly when accessed via the Tor hidden service.

This in between state is not something we support.

Fair enough. We’ll find a work around.

A quick and easy solution would be to customize the template functions in wp-discourse so that avatars are not displayed on your website.

Look at the section ‘An example that removes the avatar image from the comments_html template’ and ‘An example that removes the ‘participants’ section’:
Customize the structure of WP Discourse templates