@@ -16,23 +16,22 @@ export interface APIHandler {
1616 */
1717export function withSecurity ( handler : APIHandler ) {
1818 return async ( request : NextRequest ) : Promise < Response > => {
19- const requestId = crypto . randomUUID ( ) ;
20-
21- try {
22- // Add request ID to headers for tracking
23- const response = await handler ( request ) ;
24-
25- // Add security headers
26- response . headers . set ( 'X-Request-ID' , requestId ) ;
27- response . headers . set ( 'X-Content-Type-Options' , 'nosniff' ) ;
28- response . headers . set ( 'X-Frame-Options' , 'DENY' ) ;
29- response . headers . set ( 'X-XSS-Protection' , '1; mode=block' ) ;
30-
31- // Add CSP header
19+ } catch ( error ) {
20+ const res = ErrorSanitizer . createErrorResponse (
21+ error ,
22+ 500 ,
23+ 'api-wrapper-catch' ,
24+ requestId
25+ ) ;
26+ // Ensure error responses also include security headers/CSP
27+ res . headers . set ( 'X-Request-ID' , requestId ) ;
28+ res . headers . set ( 'X-Content-Type-Options' , 'nosniff' ) ;
29+ res . headers . set ( 'X-Frame-Options' , 'DENY' ) ;
30+ res . headers . set ( 'X-XSS-Protection' , '1; mode=block' ) ;
3231 const cspConfig = getCSPConfig ( request ) ;
33- response . headers . set ( 'Content-Security-Policy' , cspConfig . policy ) ;
34-
35- return response ;
32+ res . headers . set ( 'Content-Security-Policy' , cspConfig . policy ) ;
33+ return res ;
34+ }
3635 } catch ( error ) {
3736 return ErrorSanitizer . createErrorResponse (
3837 error ,
0 commit comments