The old “WordPress is serving up pure JSON instead of HTML” bug has been popping up intermittently since I reactivated the ActivityPub plugin. Since the ActivityPub plugin developers consider it solved, I’ve been looking into it to understand how I can fix it.
The problem arises because AP alters WordPress behaviour to respond to a request to a specific URL with either JSON (sensible if the request is from an ActivityPub client) or HTML (smart if the request is from a human who wants to view the website).
If you’re using a caching solution, it needs to support this functionality. Breeze, which I’m currently using, does not. As a result, the cache “log” and continue to serve whatever the first response to a particular URL request is.
Which sucks.
I saw that the always helpful Jan Boddez had face the same issue, so I reached out. His helpful response led me to the Surge plugin, and this helpful post from Dominik Schilling on how to configure it to account for this scenario.
Unfortunately, I haven’t had time to implement the switch yet. This note is really just a way of documenting the troubles for my own sake, and saving the relevant links for implementing the fix.
And, to that end, a final note to myself: Remember to activate the Vary-Header in the ActivityPlugin by setting the ACTIVITYPUB_SEND_VARY_HEADER
constant.
This piece of digital gardening is brought to you by the esteemed president of said garden, the procrastination monkey.
Leave a Reply