๐ฑ 25๋ 11์ ํ๊ณ
๋ค์ด๊ฐ๋ฉฐโ

์ด๋ฒ 11์์ ๋์๋ณด๋ฉด ์คํ๋ฅํฐ์์ ์์ต์ด ๋๋ ์ดํ, ๋ณธ๊ฒฉ์ ์ผ๋ก ํ๋ก๋ํธ๋ฅผ ์๊ฒ ๋๋ ํ๋ฌ์ด์๋ค. ๋ ๊ฑฐ์๋ฅผ ํ์ค ํ์ค ์ฝ์ด๋ณด๋ฉฐ ๋น์ฆ๋์ค ๋ก์ง์ ํ์ธํ๋ ๊ณผ์ ์ด ์์๋ค. dart๋ก ๊ตฌํ๋ ์ฝ๋์ด์ง๋ง ์ธ์ด ์์ ์๋ ์๋ฏธ๋ฅผ ์ฐพ์๊ฐ๋ฉฐ ์ดํดํ๋ ๊ณผ์ ์ด ์ฌ๋ฐ์๋ค. ์ต์ํ ํ๊ฒฝ์ด ์๋๋ผ ๋ ์ข์๋ ๊ฒ ๊ฐ๋ค.
์ฐ๋ฆฌ ํ๋ก๋ํธ๋ ์ ๊ฒฉ ๊ฐํธ์ ์งํํ๊ณ ์๋ค. ํ๋ก๋ํธ ์ฌ์ฉ์ฑ ๋ฌธ์ ์ ์ฌ์ฉ์ ์ฆ๊ฐ๊ฐ ๊ทธ ์ด์ ์ธ๋ฐ ์ด๋ฅผ ์ํด ๋ชฉํํ๊ณ ์๋ Step์ SEO/AEO ์ต์ ํ์ด๋ค.
ํ์ฌ ์คํ๋ฅํฐ ์น ํ๋ก๋ํธ๋ flutter๋ฅผ ํ์ฉํ์ฌ ๊ตฌํ๋์ด์๋ค. flutter๋ ์ฑ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ๋ก ์๊ณ ์์์ผ๋ flutter ์ปดํ์ผ๋ฌ์๊ฒ web์ผ๋ก ๋ฐฐํฌํ๊ธธ ์ํ๋ ํ๋๊ทธ๋ง ์ฃผ๋ฉด ์์์ ์น์ผ๋ก ๋ฐฐํฌํ ์ ์๊ฒ ํด์ค๋ค.
ํ์ง๋ง ๋ฌธ์ ๊ฐ ์๋ค. flutter๋ฅผ ํตํด ๋ง๋ ํ๋ก๋ํธ๋ ๊ทน๋จ์ ์ธ Client Side Rendering ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด์ง๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ๋ชฉํํ๋ SEO ์ต์ ํ๊ฐ ์ด๋ ค์ด ์ํฉ์ด๋ค.
๊ธฐ์กด ํ๋ก๋ํธ์๋ ์ ๋ง์ ๊ธฐ๋ฅ๋ค์ด ์กด์ฌํ๊ณ ์จ์ด์๋ ๊ธฐ๋ฅ๋ค๋ ๋ง์๋ฐ, ๋ฌ๋ฆฌ๋ ๋ง์ฐจ์ ๋ฐํด๋ฅผ ๋ฐ๊พผ๋ค๋๊ฒ ์ฝ์ง ์์ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋์ ๋์์ผ๋ก PostMessage๋ฅผ ์ฌ์ฉํ์ฌ CORS๋ฅผ ๊ณต์์ ์ผ๋ก ํด๊ฒฐํ๋ ๋์์ Next.js๋ก SEO๋ฅผ ๋ณ๋ ฌ์ ์ผ๋ก ์ก์๊ฐ๋ ์๋๋ฅผ ํ๊ธฐ๋ก ํฉ์ํ๋ค.
๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต: ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ค๊ณโ
๋ฌ๋ฆฌ๋ ๋ง์ฐจ์ ๋ฐํด๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด์๋ ์ ์คํ ์ ๋ต์ด ํ์ํ๋ค. ๊ธฐ์กด ํ๋ก๋ํธ๋ฅผ ์ค๋จ ์์ด ์ด์ํ๋ฉด์ SEO ์ต์ ํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต์ ์๋ฆฝํ๋ค.

๊ธฐ์กด์๋ flutter-web -> react ํ๊ฒฝ์ด์๋ค. flutter-web ํ๊ฒฝ์ ๊ตฌ์ถํ ์คํ๋ฅํฐ ์ต์ด์ ๊ฐ๋ฐ์๊ฐ ํด์ฌํ๊ณ ์ด์ ๊ฐ๋ฐ์๊ฐ ์ ์ฌ๋ฅผ ํ์ ๋, flutter-web์ ์ฝ๋๋ฅผ ์ ์ง๋ณด์ํ๊ธฐ๊ฐ ๋ง๋ง์น ์์๋ค๊ณ ํ๋ค. ๊ทธ๋์ postMessage๋ฅผ ํ์ฉํด์ react ์ปดํฌ๋ํธ๋ฅผ flutter-web ์์ ์๋ก์ด Document๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ผ๋ก UI๋ฅผ ๊ตฌํํ์๊ณ ๊ณ์ จ๋ค.
์ต์์์ Next.js๋ฅผ ๋์ด ์ป์ ์ ์๋ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์๋ค.
- ์ฅ์
- ๊ธฐ์กด ํ๋ก๋ํธ ์ ์งํ๋ฉฐ SSR ํ๊ฒฝ ๊ตฌ์ถ ๊ฐ๋ฅ
- ์ ์ ๋ฐ ๋์ ๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ ๊ฐ๋ฅ
- ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์ ์ ์ /๋์ Sitemap ์ถ๊ฐ ๊ฐ๋ฅ
- ๋จ์
- PostMessage๋ฅผ ํ์ฉํ์ฌ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ ๊ฐ ๋ฉ์์ง ํต์ ์ ์ ๊ด๋ฆฌํด์ผ ํด์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ณต์ก์ฑ ์ฆ๊ฐ
์ด๋ฌํ ์ ๋ต์ผ๋ก ํ๊ฒฝ์ ๊ตฌ์ถํ๊ณ , ๋๋ฉ์ธ ์ค์ ๋ ๋ณ๊ฒฝํ๋ค.
-
as-is
- ๊ธฐ์กด flutter-web : https://www.opndoctor.com/
- ๋ฆฌ์กํธ : https://somegthingReact.opndoctor.com/
-
to-be
- ๋ฅ์คํธ : https://www.opndoctor.com/
- ๊ธฐ์กด flutter-web : https://somethingOriginal.opndoctor.com/
- ๋ฆฌ์กํธ : https://somegthingReact.opndoctor.com/
๊ทธ๋ฆฌ๊ณ ์๋ฒฝ์ ๋ฐฐํฌ๋ฅผ ์์ํ๊ณ ๋ฌด์ฌํ ์๋ฃํ๋ค. ํ์ง๋ง ๋ฐฐํฌ ํ ์์์น ๋ชปํ ๋ฌธ์ ๋ค์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์์๋ค.
๋ฐฐํฌ ํ ๋ง์ฃผํ ๋ฌธ์ ๋ค๊ณผ ํด๊ฒฐ ๊ณผ์ โ
๋ฐฐํฌ๋ ์ฑ๊ณตํ์ง๋ง, ๋ณต์กํ ์ํคํ ์ฒ ๋ณ๊ฒฝ์ ์ฌํ๊ฐ ๋ฐ๋ก ๋ํ๋ฌ๋ค. ์ธ ๊ฐ์ง ์์์น ๋ชปํ ๋ฌธ์ ๋ฅผ ๋ง์ฃผํ๊ฒ ๋์๋ค.
๋ฌธ์ 1: ์ธ์ฆ ํ ํฐ์ด ์ ๋ฌ๋์ง ์์ ๋ฆฌํฌํธ๊ฐ ๋ณด์ด์ง ์๋ค.โ
๋ฌธ์ ์ํฉ
๋ฐฐํฌ ์งํ ๋ฆฌํฌํธ ๊ฒฐ์ ๋ฌธ์๊ฐ ๋น๋ฐ์ณค๋ค. ๋ฆฌํฌํธ๋ฅผ ๊ฒฐ์ ํ๋๋ฐ, ๋ฆฌํฌํธ๊ฐ ๋ณด์ฌ์ง์ง ์๋ ๋ฌธ์ ์๋ค.
์ฐ๋ฆฌ ์๋น์ค์๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ด ์กด์ฌํ๋๋ฐ ๊ทธ ์ค์ ์ ์ง ๋ถ์ ๋ฆฌํฌํธ๋ฅผ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ์ด ์๋ค. ์ํ๋ ์ง์ญ์ ์ ํํ๋ฉด ํด๋น ์ง์ญ์ ์์ ๋ฐ ์ฝ๊ตญ ๊ทธ๋ฆฌ๊ณ ํด๋น ์์/์ฝ๊ตญ๋ค์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฆฌํฌํธ์ด๋ค.
Next.js์ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํ์ฌ ๊ตฌํํ ๋ฆฌํฌํธ ํ์ด์ง๋ ๋คํธ์ํฌ ํธ์ถ๋ ๋ธ๋ผ์ฐ์ ์์ ๋ณผ ์๊ฐ ์์ด ๋๋ฒ๊น ์ด ์ด๋ ค์ ๋ค. ํ์ง๋ง ์ผํธ๋ฆฌ๋ฅผ ํตํด ์๋ฌ๋ฅผ ํ์ธํ ์ ์์๊ณ , ๊ทธ๊ฒ์ ๋ฐ๋ก 403 ์๋ฌ์๋ค.
์์ธ ๋ถ์
์คํ๋ฅํฐ ์น -> ๋ฆฌํฌํธ ํ์ด์ง๋ก ์ด๋ํ ๋ ํ ํฐ์ด ์ฎ๊ฒจ์ง์ง ์์ ๋ฌธ์ ์๋ค.
์คํ๋ฅํฐ ์๋น์ค์ ํน์ง์ธ๋ฐ ๋ฆฌํฌํธ๋ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ ํธ๋ก ๋ฐ๋ก ์กด์ฌํ๊ณ ์๋ค. flutter-web์์ ๋ฆฌํฌํธ ํ์ด์ง๋ก ์ด๋ํ ๋, ์๋์ ์์ ์ ๊ฐ์ด ์ฟ ํค๋ฅผ ์ฌ์ด์ฃผ์ด ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ณต์ ํ๊ณ report๊ฐ ๋ณด์ฌ์ง๋ ๊ณผ์ ์ด ์๋ค.
const domain = '.opndoctor.com';
html.document.cookie = 'token=$token; domain=$domain; path=/; secure; SameSite=Strict';
์์ ๊ฐ์ด ํ ํฐ์ ์ฟ ํค์ ๋ด์ ์ด๋ํ๋๋ฐ, ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๋ฉด์ ๋๋ฉ์ธ์ ๋ณ๊ฒฝํ ๊ฒ์ด ๋ฌธ์ ์ ์์ธ์ด์๋ค.
๋ง์ด๊ทธ๋ ์ด์ ๋ฐฐํฌ ์ ๋๋ฉ์ธ ์ค์ (๋ฌธ์ ์ํฉ):
- ๋ฅ์คํธ : https://www.opndoctor.com/
- ๊ธฐ์กด flutter-web : https://**.amplify.com/
- ๋ฆฌ์กํธ : https://**.opndoctor.com/
- ๋ฆฌํฌํธ : https://**.opndoctor.com/
๊ธฐ์กด flutter-web์ ๋๋ฉ์ธ์ https://www.opndoctor.com์์ https://**.amplify.com๋ก ๋ณ๊ฒฝํ๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฌธ์ flutter-web์์ ๋ฆฌํฌํธ ํ์ด์ง๋ก ํ ํฐ์ด ์ ๋ฌ์ด ๋์ง ์์๋ ๊ฒ์ด๋ค.
์ฟ ํค๋ domain ์์ฑ์ ๋ฐ๋ผ ๊ณต์ ๋ฒ์๊ฐ ๊ฒฐ์ ๋๋ค. ์ฝ๋์์ domain='.opndoctor.com'์ผ๋ก ์ค์ ๋์ด ์์ด์, opndoctor.com๊ณผ ๊ทธ ๋ชจ๋ ์๋ธ๋๋ฉ์ธ(www.opndoctor.com, report.opndoctor.com ๋ฑ)์์๋ ์ฟ ํค๊ฐ ๊ณต์ ๋์ง๋ง, ์์ ํ ๋ค๋ฅธ ๋๋ฉ์ธ์ธ *.amplify.com์์๋ ๊ณต์ ๋์ง ์๋๋ค.
SameSite=Strict ์ค์ ๋ ์ํฅ์ ๋ฏธ์ณค๋ค. SameSite=Strict๋ ๊ฐ์ ์ฌ์ดํธ์์๋ง ์ฟ ํค๋ฅผ ์ ์กํ๋ฏ๋ก, ๋ค๋ฅธ ๋๋ฉ์ธ ๊ฐ ์์ฒญ ์ ์ฟ ํค๊ฐ ์ ์ก๋์ง ์๋๋ค. ๋ง์ฝ SameSite=Lax์๋ค๋ฉด GET ์์ฒญ์ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ฌ์ดํธ์์๋ ์ฟ ํค๊ฐ ์ ์ก๋ ์ ์์ง๋ง, ์ด ๊ฒฝ์ฐ์๋ domain ์์ฑ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ทผ๋ณธ์ ์ผ๋ก ์ฟ ํค๋ฅผ ์ฝ์ ์ ์๋ ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง ์๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
๋๋ฉ์ธ์ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํ์ฌ ๊ฐ์ ๋๋ฉ์ธ ๊ณ์ด๋ก ํต์ผํ๋ค.
- ๋ฅ์คํธ : https://www.opndoctor.com/
- ๊ธฐ์กด flutter-web : https://**.opndoctor.com/
- ๋ฆฌ์กํธ : https://**.opndoctor.com/
- ๋ฆฌํฌํธ : https://**.opndoctor.com/
๊ฒฐ๊ณผ
์ธ์ฆ ํ ํฐ์ด ๋ฌด์ฌํ ๋์ด๊ฐ๊ฒ ๋๊ณ ๋ฆฌํฌํธ๊ฐ ์ ์์ ์ผ๋ก ๋ณด์ฌ์ง๊ฒ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํตํด ๋๋ฉ์ธ ๋ณ๊ฒฝ์ด ์ธ์ฆ ํ๋ฆ์ ๋ฏธ์น๋ ์ํฅ์ ๊น์ด ์ดํดํ๊ฒ ๋์๋ค.
๋ฌธ์ 2: ๋ฆฌํฌํธ ์ฌ๊ตฌ๋งค์ 404 ํ์ด์ง๊ฐ ๋ณด์ธ๋ค?โ
๋ฌธ์ ์ํฉ
๋ฆฌํฌํธ๋ฅผ ์ฌ๊ตฌ๋งค ๊ฒฐ์ ์ดํ 404 ํ์ด์ง๋ก ๋ณด์ธ๋ค๋ ์นด์นด์คํก ๋ฌธ์๊ฐ ์์์ก๋ค.
์์ธ ๋ถ์
์์ธ ํ์ ํด๋ณด๋, ํต์ฌ ๋ฌธ์ ๋ URL ๋ ๋๋ง ๋ฌธ์ ์๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ๋ ์ฒ์ ๊ฒฝํํด๋ณด์๋ค. ์ง๊ธ๊น์ง๋ ์ด๋ฐ ๋ฌธ์ ๊ฐ ์์๋๋ฐ, Next.js๋ฅผ ๊ธฐ์กด flutter-web ์์๋ก ๊ฐ์ธ๋ฉด์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ํต์ฌ์ ์ผ๋ก๋ flutter-web์์ URL์ด ๋ณ๊ฒฝ๋์ ๋, ์์ Next.js๋ก ํด๋น URL์ ๋๊ฒจ์ฃผ๋ ๋ก์ง์์ ์ฟผ๋ฆฌ์คํธ๋ง ๋ฐ URL Hash ์์ "?"์ "#"์ด ์ฌ๋ผ์ง๋ ๋ฌธ์ ์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
flutter-web์์ URL์ด ๋ณ๊ฒฝ๋ ๋ URL์ ์ ๋๋ก ๋น๋ํ ์ ์๋ ์ ํธ ํจ์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ์ฟผ๋ฆฌ์คํธ๋ง๊ณผ Hash๋ฅผ ํฌํจํ ์ ์ฒด URL์ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑํ์ฌ ์์ Next.js๋ก ์ ๋ฌํ๋๋ก ์์ ํ๋ค.
๊ฒฐ๊ณผ
๋ฆฌํฌํธ ์ฌ๊ตฌ๋งค ํ์๋ ์ ์์ ์ผ๋ก ํ์ด์ง๊ฐ ๋ณด์ด๊ฒ ๋์๋ค. PostMessage๋ฅผ ํตํ URL ๋๊ธฐํ ๋ก์ง์ ์ค์์ฑ์ ๊นจ๋ฌ์๋ค.
๋ฌธ์ 3: ์๋ก๊ณ ์นจ ํ URL ๋๊ธฐํ๊ฐ ๋์ด์ง๋ค.โ
๋ฌธ์ ์ํฉ
์์ ํ ์คํ๋ฅํฐ ์น ์ํคํ ์ฒ๋ Next.js๊ฐ ์์ HTML์ ๋ด๋นํ๊ณ , ๊ทธ ์์ iframe๊ณผ postMessage API๋ก Flutter-web์ด ํ์ HTML๋ก ์ฝ์ ๋๋ค. Flutter-web ์์ญ์์ ์๋ก๊ณ ์นจ์ ํ๊ฒ ๋๋ฉด ์ดํ์ URL์ด ๋ณ๊ฒฝ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์์ธ ๋ถ์
Flutter-web์์ window.location.reload()๋ฅผ ์ง์ ํธ์ถํ๋ฉด,
iframe ๋ด๋ถ๋ง ์๋ก๊ณ ์นจ๋์ด ๋ถ๋ชจ(Next.js)์์ PostMessage ํต์ ์ฐ๊ฒฐ์ด ๋์ด์ง๊ฒ ๋๋ค.
์ด๋ก ์ธํด ์ดํ Flutter-web์์ URL์ด ๋ณ๊ฒฝ๋์ด๋ ์์ Next.js๋ก ํด๋น ๋ณ๊ฒฝ์ฌํญ์ ์ ๋ฌํ ์ ์์ด, Next.js์ URL์ด ๋๊ธฐํ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
Flutter-web์์ ์ง์ ์๋ก๊ณ ์นจํ๋ ๋์ ,
IframeChildManager๋ฅผ ํตํด ๋ถ๋ชจ(Next.js)์๊ฒ ์๋ก๊ณ ์นจ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๋๋ก ๋ณ๊ฒฝํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ถ๋ชจ๊ฐ ์ ์ฒด ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๊ฑฐ๋ URL์ ์ ์ดํ ์ ์์ด,
PostMessage ํต์ ์ฑ๋์ด ์ ์ง๋๊ณ URL ๋๊ธฐํ๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋ค.
ASIS (๋ฌธ์ ์ํฉ)
void webReload() async {
window.location.reload()
}
TOBE (ํด๊ฒฐ ๋ฐฉ๋ฒ)
void webReload() async {
final manager = IframeChildManager();
const storage = FlutterSecureStorage();
final somthing_token = await storage.read(
key: "SOMETHING_TOKEN");
manager.send(
type: ParentIframeMessageType.message,
payload: {
'event': ChildIframeMessageEventType.reload.value,
'data': {
if (somthing_token != null) 'token': somthing_token,
},
},
);
}
๊ฒฐ๊ณผ
์๋ก๊ณ ์นจ ํ์๋ PostMessage ํต์ ์ด ์ ์ง๋์ด URL ๋๊ธฐํ๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๊ฒ ๋์๋ค. iframe๊ณผ ๋ถ๋ชจ ๊ฐ ํต์ ๊ด๋ฆฌ์ ์ค์์ฑ์ ๋ฐฐ์ ๋ค.
๋ฌธ์ ํด๊ฒฐ์ ๊ฒฐ๊ณผ: ๋ฌ์ฑํ ์ฑ๊ณผโ
์ด๋ฌํ ๋ฌธ์ ๋ค์ ํ๋์ฉ ํด๊ฒฐํ๋ฉฐ ์ป์ ๊ฒฐ๊ณผ๋ ๊ธฐ๋ ์ด์์ด์๋ค.
SEO ๋ ธ์ถ/ ํด๋ฆญ ์์น

| ๊ตฌ๋ถ | 10์(๊ธฐ์ค) | 11์ | ~12/3 | 10์ ๋๋น 11์ ์์น๋ฅ |
|---|---|---|---|---|
| ๋ ธ์ถ ์ | ์ฝ 1,300ํ | ์ฝ 2,000ํ (ํ๊ท ) | ์ฝ 3,700ํ | ์ฝ +180% (2.8๋ฐฐ) ๐บ |
| ํด๋ฆญ ์ | ์ฝ 10ํ | ์ฝ 25ํ (ํ๊ท ) | ์ฝ 75ํ | ์ฝ +650% (7.5๋ฐฐ) ๐บ |
๊ฐ์ ์ ์๋ํ์ ๋ ์ฑ๊ณผ๋ก ๋์ ๋ณด์ด๋๊ฒ ๋๋ฌด ํฅ๋ฏธ์ง์งํ ํ ๋ฌ์ด์๋ค.
๊ธฐ์ ์ ์ฑ๊ณผ
- ๋ณ๋ ฌ์ ์ผ๋ก Next.js๋ก ๊ฐ ํ์ด์ง ์ด๊ด ๊ฐ๋ฅํ ํ๊ฒฝ ๊ตฌ์ถ
- ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํ SEO ์ต์ ํ ๊ธฐ๋ฐ ๋ง๋ จ
- ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต ์๋ฆฝ ๋ฐ ์คํ
- PostMessage๋ฅผ ํตํ ๋ณต์กํ ์ํคํ ์ฒ ๊ด๋ฆฌ ๊ฒฝํ ์ถ์
๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์์ ์ป์ ๊ตํโ
11์์ ๋ชฐ์ ์ ํ ๋ฌ์ด์๋ค. ์๋ก์ด ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ฌ์ฅ์ด ๋ฐ์๋ ํ ๋ฌ์ด์๋ค.
์ด๋ฒ ๋ง์ด๊ทธ๋ ์ด์ ์ ํตํด ๋ฐฐ์ด ๊ฐ์ฅ ํฐ ๊ตํ์ ๋ฌ๋ฆฌ๋ ๋ง์ฐจ์ ๋ฐํด๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์ ์ด๋ ค์์ด์๋ค. ์ธ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ๋ค์์ ๊น์ด ๋๊ผ๋ค:
1. ๋๋ฉ์ธ ๋ณ๊ฒฝ์ด ์ธ์ฆ ํ๋ฆ์ ๋ฏธ์น๋ ์ํฅ
๋ฌธ์ 1์ ํด๊ฒฐํ๋ฉด์ ๋ฐฐ์ด ์ ์ด๋ค. ์ฟ ํค ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉํ ๋, ๋๋ฉ์ธ ๊ฐ ์ฟ ํค ๊ณต์ ๊ท์น์ ์ ํํ ์ดํดํด์ผ ํ๋ค๋ ๊ฒ์ ๋ชธ์ ์ฒด๊ฐํ๋ค. domain ์์ฑ๊ณผ SameSite ์ค์ ์ด ์ธ์ฆ ํ๋ฆ์ ๋ฏธ์น๋ ์ํฅ์ ์ด๋ก ์ด ์๋ ์ค์ ๋ฌธ์ ๋ก ๊ฒฝํํ๊ฒ ๋์๋ค.
2. ์๋ฒ ์ปดํฌ๋ํธ ๋๋ฒ๊น ์ ์ด๋ ค์
๋ธ๋ผ์ฐ์ ์์ ๋คํธ์ํฌ ํธ์ถ์ ๋ณผ ์ ์์ด ์ผํธ๋ฆฌ ๊ฐ์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ ์ค์์ฑ์ ๊นจ๋ฌ์๋ค. ์๋ฒ ์ฌ์ด๋์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ ๋๋ ์ ํต์ ์ธ ๋ฐฉ๋ฒ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค.
3. ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ณต์ก์ฑ
PostMessage๋ฅผ ํตํ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ ๊ฐ ๋ฉ์์ง ํต์ ๊ด๋ฆฌ๊ฐ ์์๋ณด๋ค ๋ณต์กํ๋ค. ๋ฌธ์ 2์ ๋ฌธ์ 3์ ํด๊ฒฐํ๋ฉด์ iframe๊ณผ ๋ถ๋ชจ ๊ฐ ํต์ ๊ด๋ฆฌ์ ๋ฏธ๋ฌํจ์ ๋ฐฐ์ ๋ค. URL ๋๊ธฐํ, ์๋ก๊ณ ์นจ ์ฒ๋ฆฌ ๋ฑ ๋จ์ํด ๋ณด์ด๋ ๋์๋ค์ด ๋ณต์กํ ์ํคํ ์ฒ์์๋ ์์์น ๋ชปํ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
๋ง๋ฌด๋ฆฌํ๋ฉฐโ
์ด์ ์ด๋ ์ ๋ ์ต์ํด์ก์ผ๋, ๋ ๊น์ด ํ์ ์ ๋๋ก ์ดํดํด๋ณด๊ณ ์ ๋๋ก ์์ ํด๋ณด์. ์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ด์ ์ฝ 20ํผ์ผํธ ์งํ๋๋๋ฐ, ์ด์ ๋ ๋จ์ ํ ์คํธ๋ ๋์ ํด๋ณด๋ฉฐ ์์ ์ ์ด๊ณ ๋น ๋ฅด๊ฒ ๋ณํํ ์ ์๋ ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๋ฐ ์ง์คํด๋ณด๋ ค๊ณ ํ๋ค.
12์์ ์ฐ๋ง๋ก ์ฝ์์ด ๊ฝค๋ ์๋ค. ํ์ง๋ง ์ ์ ๋์น ์๊ณ ์ 25๋ ์ ๋ง๋ฌด๋ฆฌํ๊ณ 26๋ ์ ์ค๋นํ๋ ํ ๋ฌ๋ก ๊ธด ํธํก์ผ๋ก ๊ฐ์ ธ๊ฐ๋ ค๊ณ ํ๋ค.
