From 6c5ba6765de73526a495e23e930eda1e12367946 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Mon, 13 Jul 2026 11:37:06 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EC=88=98=20=EB=B9=84?= =?UTF-8?q?=EC=A0=95=EC=83=81=20=EC=A6=9D=EA=B0=80=20=EB=B0=A9=EC=A7=80=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80=20-=20sessionStorage=20?= =?UTF-8?q?=ED=99=9C=EC=9A=A9=20=EC=A4=91=EB=B3=B5=20=EC=A6=9D=EA=B0=80=20?= =?UTF-8?q?=EC=96=B5=EC=A0=9C=20-=20CSRF=20=ED=86=A0=ED=81=B0=20=EA=B8=B0?= =?UTF-8?q?=EB=B0=98=20=EC=A1=B0=ED=9A=8C=EC=88=98=20=EC=A6=9D=EA=B0=80=20?= =?UTF-8?q?API=20=ED=98=B8=EC=B6=9C=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/static/js/djb/inquiry-view.js | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/resources/static/js/djb/inquiry-view.js diff --git a/src/main/resources/static/js/djb/inquiry-view.js b/src/main/resources/static/js/djb/inquiry-view.js new file mode 100644 index 0000000..32f093d --- /dev/null +++ b/src/main/resources/static/js/djb/inquiry-view.js @@ -0,0 +1,35 @@ +(function () { + 'use strict'; + + // 조회수 비정상 증가 억제: sessionStorage 로 한 세션 내 중복 증가 방지. + var container = document.querySelector('.inquiry-detail-container[data-inquiry-id]'); + if (!container) return; + + var inquiryId = container.getAttribute('data-inquiry-id'); + if (!inquiryId) return; + + var viewedKey = 'inquiry_viewed_' + inquiryId; + if (sessionStorage.getItem(viewedKey)) { + return; // 이미 이번 세션에서 조회 → 증가하지 않음 + } + + function getCsrfToken() { + // 세션 기반 CSRF: 쿠키 대신 에서 토큰을 읽는다. + var meta = document.querySelector('meta[name="_csrf"]'); + return meta ? meta.getAttribute('content') : ''; + } + + fetch('/inquiry/' + encodeURIComponent(inquiryId) + '/view', { + method: 'POST', + credentials: 'same-origin', + headers: { 'X-XSRF-TOKEN': getCsrfToken() } + }) + .then(function (res) { + if (res.ok) { + sessionStorage.setItem(viewedKey, 'true'); + } + }) + .catch(function (err) { + console.error('[inquiry-view] increment error', err); + }); +})();