11import cors from "cors" ;
22
3+ // Regex cobre qualquer preview do Vercel: painel-vagas-*.vercel.app
4+ // (hash-based e branch-based, ex: git-master-bene-teslas-projects)
5+ const VERCEL_PREVIEW_RE = / ^ h t t p s : \/ \/ p a i n e l - v a g a s - [ a - z 0 - 9 - ] + \. v e r c e l \. a p p $ / ;
6+
37const DEFAULT_ALLOWED_ORIGINS = [
48 "https://painel-vagas-lake.vercel.app" ,
9+ "https://painel-vagas-git-master-bene-teslas-projects.vercel.app" ,
510 "https://painel-vagas-m6hbzlqeh-bene-teslas-projects.vercel.app" ,
611 "https://jobsglobalscraper.ddns.net" ,
7- "http://jobsglobalscraper.ddns.net" ,
812 "http://localhost:5173" ,
913 "http://localhost:5174" ,
1014] ;
@@ -19,14 +23,17 @@ function parseAllowedOrigins(value: string | undefined): Set<string> {
1923
2024export const corsOptions : cors . CorsOptions = {
2125 origin ( origin , callback ) {
22- const allowedOrigins = parseAllowedOrigins (
23- process . env . CORS_ALLOWED_ORIGINS ,
24- ) ;
25- if ( ! origin || allowedOrigins . has ( origin ) ) return callback ( null , true ) ;
26+ if ( ! origin ) return callback ( null , true ) ;
27+
28+ if ( VERCEL_PREVIEW_RE . test ( origin ) ) return callback ( null , true ) ;
29+
30+ const allowedOrigins = parseAllowedOrigins ( process . env . CORS_ALLOWED_ORIGINS ) ;
31+ if ( allowedOrigins . has ( origin ) ) return callback ( null , true ) ;
32+
2633 callback ( new Error ( "Origin not allowed by CORS" ) ) ;
2734 } ,
28- methods : [ "GET" , "POST" , "OPTIONS" ] ,
29- allowedHeaders : [ "Content-Type" , "Authorization" ] ,
35+ methods : [ "GET" , "POST" , "PATCH" , "DELETE" , " OPTIONS"] ,
36+ allowedHeaders : [ "Content-Type" , "Authorization" , "X-Requested-With" ] ,
3037 credentials : true ,
3138 maxAge : 86400 ,
3239} ;
0 commit comments