You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					257 lines
				
				6.8 KiB
			
		
		
			
		
	
	
					257 lines
				
				6.8 KiB
			| 
											3 years ago
										 | import fastify from 'fastify' | ||
|  | import fastifyCors, { | ||
|  |   FastifyCorsOptionsDelegate, | ||
|  |   FastifyCorsOptionsDelegatePromise, | ||
|  |   FastifyPluginOptionsDelegate, | ||
|  |   OriginFunction | ||
|  | } from '..' | ||
|  | 
 | ||
|  | const app = fastify() | ||
|  | 
 | ||
|  | app.register(fastifyCors) | ||
|  | 
 | ||
|  | app.register(fastifyCors, { | ||
|  |   origin: true, | ||
|  |   allowedHeaders: 'authorization,content-type', | ||
|  |   methods: 'GET,POST,PUT,PATCH,DELETE,OPTIONS', | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: 'authorization', | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | app.register(fastifyCors, { | ||
|  |   origin: true, | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | app.register(fastifyCors, { | ||
|  |   origin: '*', | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | app.register(fastifyCors, { | ||
|  |   origin: /\*/, | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | app.register(fastifyCors, { | ||
|  |   origin: ['*', 'something'], | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | app.register(fastifyCors, { | ||
|  |   origin: [/\*/, /something/], | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | const corsDelegate: OriginFunction = (origin, cb) => { | ||
|  |   if (typeof origin === 'undefined' || /localhost/.test(origin)) { | ||
|  |     cb(null, true) | ||
|  |     return | ||
|  |   } | ||
|  |   cb(new Error(), false) | ||
|  | } | ||
|  | 
 | ||
|  | app.register(fastifyCors, { | ||
|  |   origin: corsDelegate, | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | const appHttp2 = fastify({ http2: true }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, { | ||
|  |   origin: true, | ||
|  |   allowedHeaders: 'authorization,content-type', | ||
|  |   methods: 'GET,POST,PUT,PATCH,DELETE,OPTIONS', | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: 'authorization', | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, { | ||
|  |   origin: true, | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, { | ||
|  |   origin: '*', | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, { | ||
|  |   origin: /\*/, | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, { | ||
|  |   origin: ['*', 'something'], | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, { | ||
|  |   origin: [/\*/, /something/], | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, { | ||
|  |   origin: (origin: string | undefined, cb: (err: Error | null, allow: boolean) => void) => { | ||
|  |     if (typeof origin === 'undefined' || /localhost/.test(origin)) { | ||
|  |       cb(null, true) | ||
|  |       return | ||
|  |     } | ||
|  |     cb(new Error(), false) | ||
|  |   }, | ||
|  |   allowedHeaders: ['authorization', 'content-type'], | ||
|  |   methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |   credentials: true, | ||
|  |   exposedHeaders: ['authorization'], | ||
|  |   maxAge: 13000, | ||
|  |   preflightContinue: false, | ||
|  |   optionsSuccessStatus: 200, | ||
|  |   preflight: false, | ||
|  |   strictPreflight: false | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, (): FastifyCorsOptionsDelegate => (req, cb) => { | ||
|  |   cb(null, { | ||
|  |     origin: [/\*/, /something/], | ||
|  |     allowedHeaders: ['authorization', 'content-type'], | ||
|  |     methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |     credentials: true, | ||
|  |     exposedHeaders: ['authorization'], | ||
|  |     maxAge: 13000, | ||
|  |     preflightContinue: false, | ||
|  |     optionsSuccessStatus: 200, | ||
|  |     preflight: false, | ||
|  |     strictPreflight: false | ||
|  |   }) | ||
|  | }) | ||
|  | 
 | ||
|  | appHttp2.register(fastifyCors, (): FastifyCorsOptionsDelegatePromise => (req) => { | ||
|  |   return Promise.resolve({ | ||
|  |     origin: [/\*/, /something/], | ||
|  |     allowedHeaders: ['authorization', 'content-type'], | ||
|  |     methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |     credentials: true, | ||
|  |     exposedHeaders: ['authorization'], | ||
|  |     maxAge: 13000, | ||
|  |     preflightContinue: false, | ||
|  |     optionsSuccessStatus: 200, | ||
|  |     preflight: false, | ||
|  |     strictPreflight: false | ||
|  |   }) | ||
|  | }) | ||
|  | 
 | ||
|  | const delegate: FastifyPluginOptionsDelegate<FastifyCorsOptionsDelegatePromise> = () => async (req) => { | ||
|  |   return { | ||
|  |     origin: [/\*/, /something/], | ||
|  |     allowedHeaders: ['authorization', 'content-type'], | ||
|  |     methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], | ||
|  |     credentials: true, | ||
|  |     exposedHeaders: ['authorization'], | ||
|  |     maxAge: 13000, | ||
|  |     preflightContinue: false, | ||
|  |     optionsSuccessStatus: 200, | ||
|  |     preflight: false, | ||
|  |     strictPreflight: false | ||
|  |   } | ||
|  | } | ||
|  | appHttp2.register(fastifyCors, delegate) |