Skip to content

Commit 3f9e056

Browse files
authored
Merge pull request #282 from boostcampwm-2024/dev-back
[BE] Merge to main
2 parents 8f2a7f8 + 7e40337 commit 3f9e056

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

Diff for: backend/proxy-server/src/server/fastify.server.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
12
import fastify from 'fastify';
23
import { fastifyConfig, replyFromConfig } from './config/fastify.config';
3-
import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
44
import type { Logger } from 'common/logger/createFastifyLogger';
55
import { createFastifyLogger } from 'common/logger/createFastifyLogger';
66
import { createErrorLog } from 'common/error/system.error';
@@ -17,6 +17,10 @@ interface FastifyServer {
1717
stop: (server: FastifyInstance, logger: Logger) => Promise<void>;
1818
}
1919

20+
export interface Locals {
21+
originalContentType?: string;
22+
}
23+
2024
export const fastifyServer: FastifyServer = {
2125
listen: () => startFastifyServer(),
2226
stop: (server: FastifyInstance, logger: Logger) => stopFastifyServer(server, logger),
@@ -79,6 +83,11 @@ const initialize = (server: FastifyInstance, logger: Logger) => {
7983

8084
const addPlugins = (server: FastifyInstance) => {
8185
server.register(replyFrom, replyFromConfig);
86+
server.addHook('preHandler', async (request) => {
87+
(request as any).locals = {
88+
originalContentType: request.headers['content-type'],
89+
};
90+
});
8291
};
8392

8493
const addRouters = (server: FastifyInstance, logger: Logger) => {

Diff for: backend/proxy-server/src/server/handler/proxy.handler.ts

+14-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type { ProjectAdapter } from 'server/adapter/project.adapter';
55
import { logHandler } from 'server/handler/log.handler';
66
import type { LogAdapter } from 'server/adapter/log.adapter';
77
import type { Logger } from 'common/logger/createFastifyLogger';
8+
import type { Locals } from 'server/fastify.server';
89

910
export const proxyHandler = async (
1011
request: FastifyRequest,
@@ -15,16 +16,28 @@ export const proxyHandler = async (
1516
) => {
1617
const targetUrl = await projectAdapter.resolveTargetUrl(request);
1718

18-
return sendProxyRequest(targetUrl, reply, logAdapter, logger);
19+
const locals = (request as any).locals as Locals;
20+
const extraHeaders: { [header: string]: string } = {};
21+
22+
if (locals.originalContentType) {
23+
extraHeaders['content-type'] = locals.originalContentType;
24+
}
25+
26+
return sendProxyRequest(targetUrl, reply, logAdapter, logger, extraHeaders);
1927
};
2028

2129
const sendProxyRequest = async (
2230
targetUrl: string,
2331
reply: FastifyReply,
2432
logAdapter: LogAdapter,
2533
logger: Logger,
34+
extraHeaders: { [header: string]: string },
2635
): Promise<void> => {
2736
return reply.from(targetUrl, {
37+
rewriteRequestHeaders: (req, headers) => ({
38+
...headers,
39+
...extraHeaders,
40+
}),
2841
onError: (reply, error) => {
2942
throw new ProxyError('프록시 요청 처리 중 오류가 발생했습니다.', 502, error.error);
3043
},

0 commit comments

Comments
 (0)