Skip to content
Snippets Groups Projects
Unverified Commit fb309f3d authored by かっこかり's avatar かっこかり Committed by GitHub
Browse files

return a `Vary: Accept` header for all dual-format endpoints #365 (#13044)


`/users/:user`, `/@:user`, `/notes/:note` return different responses
depending on the request's `Accept:` header. If we don't consistently
return a `Vary: Accept` header, browsers and caching proxies will get
confused, and return AP representations when HTML was requested, or
vice versa.

Co-authored-by: default avatardakkar <dakkar@thenautilus.net>
Co-authored-by: default avatarsyuilo <Syuilotan@yahoo.co.jp>
parent 4c87e98e
No related branches found
No related tags found
No related merge requests found
......@@ -648,6 +648,8 @@ export class ActivityPubServerService {
});
fastify.get<{ Params: { user: string; } }>('/users/:user', { constraints: { apOrHtml: 'ap' } }, async (request, reply) => {
vary(reply.raw, 'Accept');
const userId = request.params.user;
const user = await this.usersRepository.findOneBy({
......@@ -660,6 +662,8 @@ export class ActivityPubServerService {
});
fastify.get<{ Params: { user: string; } }>('/@:user', { constraints: { apOrHtml: 'ap' } }, async (request, reply) => {
vary(reply.raw, 'Accept');
const user = await this.usersRepository.findOneBy({
usernameLower: request.params.user.toLowerCase(),
host: IsNull(),
......
......@@ -476,6 +476,8 @@ export class ClientServerService {
isSuspended: false,
});
vary(reply.raw, 'Accept');
if (user != null) {
const profile = await this.userProfilesRepository.findOneByOrFail({ userId: user.id });
const meta = await this.metaService.fetch();
......@@ -515,6 +517,8 @@ export class ClientServerService {
return;
}
vary(reply.raw, 'Accept');
reply.redirect(`/@${user.username}${ user.host == null ? '' : '@' + user.host}`);
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment