Prerequisites
Fastify version
4.5.3
Plugin version
9.2.1
Node.js version
16.15.1
Operating system
macOS
Operating system version (i.e. 20.04, 11.3, 10)
13.4
Description
I need to allow CORS for my Fastify application. To achieve this I'm using @fastify/cors package with following settings:
fastify.register(cors, {
origin: '*',
methods: ['GET', 'POST'],
allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true,
})
if I register the http-proxy route for something like this:
.register(require('@fastify/http-proxy'), {
upstream: 'https://some_url',
})
I will get an error:
/node_modules/find-my-way/index.js:292
throw new Error(`Method '${method}' already declared for route '${path}' with constraints '${JSON.stringify(constraints)}'`)
^
Error: Method 'OPTIONS' already declared for route '/*' with constraints '{}'
at Router._on (/node_modules/find-my-way/index.js:292:13)
at Router.on (/node_modules/find-my-way/index.js:136:10)
at Object.addNewRoute (/node_modules/fastify/lib/route.js:262:16)
at Object.route (/node_modules/fastify/lib/route.js:194:19)
at Object._route [as route] (/node_modules/fastify/fastify.js:268:27)
at fastifyHttpProxy (/node_modules/@fastify/http-proxy/index.js:291:11)
at Plugin.exec (/node_modules/avvio/plugin.js:130:19)
at Boot.loadPlugin (/node_modules/avvio/plugin.js:272:10)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
Probably because of this part of the lib:
fastify.route({
url: '/*',
method: opts.httpMethods || httpMethods,
preHandler,
config: opts.config || {},
constraints: opts.constraints || {},
handler
Steps to Reproduce
Register fastify/cors with fastify/fastify-http-proxy for all routes
fastify
.register(cors, {
origin: '*',
methods: ['GET', 'POST'],
allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true,
})
.register(require('@fastify/http-proxy'), {
upstream: 'https://some_url',
})
Expected Behavior
There is a way to enable cors on all routes for http-proxy plugin
PS:
I tried something like:
.register(require('@fastify/http-proxy'), {
upstream: process.env.PUBLIC_API_URL,
onResponse: (request: FastifyRequest, reply: FastifyReply) => {
reply.header('Access-Control-Allow-Origin', '*')
reply.header('Access-Control-Allow-Methods', '*')
reply.header('Access-Control-Allow-Headers', '*')
},
})
but it didn't do the trick for me
Prerequisites
Fastify version
4.5.3
Plugin version
9.2.1
Node.js version
16.15.1
Operating system
macOS
Operating system version (i.e. 20.04, 11.3, 10)
13.4
Description
I need to allow CORS for my Fastify application. To achieve this I'm using
@fastify/corspackage with following settings:if I register the http-proxy route for something like this:
I will get an error:
Probably because of this part of the lib:
Steps to Reproduce
Register
fastify/corswithfastify/fastify-http-proxyfor all routesExpected Behavior
There is a way to enable cors on all routes for http-proxy plugin
PS:
I tried something like:
but it didn't do the trick for me