SPB Git
1.9 KB · 45 lines typescript
1import type { NextConfig } from "next";23const isProd = process.env.NODE_ENV === "production";4const csp = [5  "default-src 'self'",6  isProd ? "script-src 'self' 'unsafe-inline'" : "script-src 'self' 'unsafe-inline' 'unsafe-eval'",7  "style-src 'self' 'unsafe-inline'",8  "img-src 'self' data: blob:",9  "font-src 'self' data:",10  "connect-src 'self'",11  "frame-src 'self'",12  "object-src 'self'",13  "base-uri 'self'",14  "form-action 'self'",15  "frame-ancestors 'none'",16  "upgrade-insecure-requests",17].join("; ");1819const securityHeaders = [20  { key: "X-Content-Type-Options", value: "nosniff" },21  { key: "X-Frame-Options", value: "DENY" },22  { key: "Referrer-Policy", value: "strict-origin-when-cross-origin" },23  { key: "Permissions-Policy", value: "camera=(), microphone=(), geolocation=(), browsing-topics=()" },24  { key: "Strict-Transport-Security", value: "max-age=63072000; includeSubDomains" },25  { key: "Cross-Origin-Opener-Policy", value: "same-origin" },26  { key: "Content-Security-Policy", value: csp },27];2829const nextConfig: NextConfig = {30  poweredByHeader: false,31  reactStrictMode: true,32  serverExternalPackages: ["postgres", "@node-rs/argon2"],33  experimental: { serverActions: { bodySizeLimit: "2mb" } },34  async headers() {35    return [36      { source: "/(.*)", headers: securityHeaders },37      { source: "/admin/:path*", headers: [{ key: "X-Robots-Tag", value: "noindex, nofollow" }, { key: "Cache-Control", value: "no-store" }] },38      { source: "/login", headers: [{ key: "X-Robots-Tag", value: "noindex, nofollow" }, { key: "Cache-Control", value: "no-store" }] },39      { source: "/api/admin/:path*", headers: [{ key: "X-Robots-Tag", value: "noindex" }, { key: "Cache-Control", value: "no-store" }] },40      { source: "/api/v1/:path*", headers: [{ key: "Access-Control-Allow-Origin", value: "*" }, { key: "Access-Control-Allow-Methods", value: "GET, OPTIONS" }] },41    ];42  },43};44export default nextConfig;45
Files · 2db8b968446e61b102004934d20027a0ac28f0f5
Menu

Theme