feat: CSP 다음/카카오 도메인 허용 + 입고 성적서 파일 백엔드 연동 + 팝업 이미지 중앙정렬
- middleware CSP: *.kakao.com, *.kakaocdn.net 추가 (다음 주소찾기 차단 해결) - frame-src에 'self' 추가 - 공지 팝업 이미지 중앙정렬 ([&_img]:mx-auto) - HR 사원관리, 결재, 품목, 생산 등 다수 개선 - API 에러 핸들링 및 JSON 파싱 안정화
This commit is contained in:
@@ -199,6 +199,23 @@ export async function middleware(request: NextRequest) {
|
||||
const { pathname } = request.nextUrl;
|
||||
const userAgent = request.headers.get('user-agent') || '';
|
||||
|
||||
// 🚨 -2️⃣ Server Action 요청 처리
|
||||
// Server Action POST 요청은 Next-Action 헤더를 가짐
|
||||
// intlMiddleware가 RSC 응답을 간섭하면 직렬화가 깨지므로
|
||||
// locale만 수동 rewrite하고 intlMiddleware는 건너뜀
|
||||
if (request.headers.get('next-action')) {
|
||||
// 기본 locale(ko)은 URL에 없으므로 locale prefix 추가하여 rewrite
|
||||
const hasLocale = locales.some(
|
||||
(l) => pathname.startsWith(`/${l}/`) || pathname === `/${l}`
|
||||
);
|
||||
if (!hasLocale) {
|
||||
const url = request.nextUrl.clone();
|
||||
url.pathname = `/${defaultLocale}${pathname}`;
|
||||
return NextResponse.rewrite(url);
|
||||
}
|
||||
return NextResponse.next();
|
||||
}
|
||||
|
||||
// 🚨 -1️⃣ Next.js 내부 요청 필터링
|
||||
// 동적 라우트 세그먼트가 리터럴로 포함된 요청은 Next.js 내부 컴파일/prefetch
|
||||
// 예: /[locale]/settings/... 형태의 요청은 실제 사용자 요청이 아님
|
||||
@@ -307,12 +324,12 @@ export async function middleware(request: NextRequest) {
|
||||
intlResponse.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
|
||||
intlResponse.headers.set('Content-Security-Policy', [
|
||||
"default-src 'self'",
|
||||
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://maps.googleapis.com *.daumcdn.net",
|
||||
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://maps.googleapis.com *.daumcdn.net *.kakaocdn.net *.kakao.com",
|
||||
"style-src 'self' 'unsafe-inline'",
|
||||
"img-src 'self' data: blob: https:",
|
||||
"font-src 'self' data: https://fonts.gstatic.com",
|
||||
"connect-src 'self' https://maps.googleapis.com *.daum.net *.daumcdn.net",
|
||||
"frame-src *.daum.net *.daumcdn.net",
|
||||
"connect-src 'self' https://maps.googleapis.com *.daum.net *.daumcdn.net *.kakao.com *.kakaocdn.net",
|
||||
"frame-src 'self' *.daum.net *.daumcdn.net *.kakao.com *.kakaocdn.net",
|
||||
"frame-ancestors 'none'",
|
||||
"base-uri 'self'",
|
||||
"form-action 'self'",
|
||||
|
||||
Reference in New Issue
Block a user