diff --git a/src/Model/Item.php b/src/Model/Item.php index 6ce65dcf61..62b8b78772 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -4155,6 +4155,10 @@ class Item try { $curlResult = DI::httpClient()->head($uri, [HttpClientOptions::ACCEPT_CONTENT => HttpClientAccept::JSON_AS, HttpClientOptions::REQUEST => HttpClientRequest::ACTIVITYPUB]); + if (!HTTPSignature::isValidContentType($curlResult->getContentType(), $uri) && (current(explode(';', $curlResult->getContentType())) == 'application/json')) { + // Issue 14126: Workaround for Mastodon servers that return "application/json" on a "head" request. + $curlResult = HTTPSignature::fetchRaw($uri, $uid); + } if (HTTPSignature::isValidContentType($curlResult->getContentType(), $uri)) { $fetched_uri = ActivityPub\Processor::fetchMissingActivity($uri, [], '', $completion, $uid); }