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
						
					
					
				| 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)
 |