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