|
|
|
@ -78,6 +78,21 @@ export const handle: Handle = async ({ event, resolve }) => {
|
|
|
|
response.headers.set('X-Frame-Options', 'DENY');
|
|
|
|
response.headers.set('X-Frame-Options', 'DENY');
|
|
|
|
response.headers.set('Referrer-Policy', 'no-referrer');
|
|
|
|
response.headers.set('Referrer-Policy', 'no-referrer');
|
|
|
|
response.headers.set('X-Content-Type-Options', 'nosniff');
|
|
|
|
response.headers.set('X-Content-Type-Options', 'nosniff');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Mitigar aviso de “preload no usado” en CSS:
|
|
|
|
|
|
|
|
// Filtrar del header Link los preloads con as=style (dejamos modulepreload para JS).
|
|
|
|
|
|
|
|
const link = response.headers.get('Link') || response.headers.get('link');
|
|
|
|
|
|
|
|
if (link) {
|
|
|
|
|
|
|
|
const filtered = link
|
|
|
|
|
|
|
|
.split(',')
|
|
|
|
|
|
|
|
.map((s) => s.trim())
|
|
|
|
|
|
|
|
.filter((seg) => !/;\s*as=style\b/i.test(seg));
|
|
|
|
|
|
|
|
if (filtered.length > 0) {
|
|
|
|
|
|
|
|
response.headers.set('Link', filtered.join(', '));
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
response.headers.delete('Link');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch {
|
|
|
|
} catch {
|
|
|
|
// Ignorar si la implementación de Response no permite set()
|
|
|
|
// Ignorar si la implementación de Response no permite set()
|
|
|
|
|