Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
41 lines
1.8 KiB
Plaintext
41 lines
1.8 KiB
Plaintext
export const headersWithCors = ({ headers, req })=>{
|
|
const cors = req?.payload?.config.cors;
|
|
const requestOrigin = req?.headers?.get('Origin');
|
|
if (cors) {
|
|
const defaultAllowedHeaders = [
|
|
'Origin',
|
|
'X-Requested-With',
|
|
'Content-Type',
|
|
'Accept',
|
|
'Authorization',
|
|
'Content-Encoding',
|
|
'x-apollo-tracing',
|
|
'X-Payload-HTTP-Method-Override'
|
|
];
|
|
// Only set default CORS headers if they haven't been set by custom handler
|
|
if (!headers.has('Access-Control-Allow-Methods')) {
|
|
headers.set('Access-Control-Allow-Methods', 'PUT, PATCH, POST, GET, DELETE, OPTIONS');
|
|
}
|
|
if (!headers.has('Access-Control-Allow-Headers')) {
|
|
if (typeof cors === 'object' && 'headers' in cors) {
|
|
headers.set('Access-Control-Allow-Headers', [
|
|
...defaultAllowedHeaders,
|
|
...cors.headers
|
|
].filter(Boolean).join(', '));
|
|
} else {
|
|
headers.set('Access-Control-Allow-Headers', defaultAllowedHeaders.join(', '));
|
|
}
|
|
}
|
|
if (!headers.has('Access-Control-Allow-Origin')) {
|
|
if (cors === '*' || typeof cors === 'object' && 'origins' in cors && cors.origins === '*') {
|
|
headers.set('Access-Control-Allow-Origin', '*');
|
|
} else if (Array.isArray(cors) && cors.indexOf(requestOrigin) > -1 || !Array.isArray(cors) && typeof cors === 'object' && 'origins' in cors && cors.origins.indexOf(requestOrigin) > -1) {
|
|
headers.set('Access-Control-Allow-Credentials', 'true');
|
|
headers.set('Access-Control-Allow-Origin', requestOrigin);
|
|
}
|
|
}
|
|
}
|
|
return headers;
|
|
};
|
|
|
|
//# sourceMappingURL=headersWithCors.js.map |