๋ฆฌ์กํธ๋ฅผ ๊ฐ๋ฐํ๋ ์ค..
๊ฐ๋ ๊ณต๋ถํ ๋ ๋ณด์๋ CORS๋ฅผ ์๋ฌ๋ก ๋ง๋ฑ๋๋ฆฌ๊ฒ ๋์๋ค...!๐คจ
CORS
Cross-Origin Resource Sharing(CORS)์ ์ถ๊ฐ์ ์ธ HTTP header๋ฅผ ์ฌ์ฉํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ origin์ ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
์๋น์คํ๊ณ ์์ง ์์ ์ฌ์ดํธ์์ ์ธ์ ์ ์์ฒญํด์ ์ธ์ ์ ํ๋ํ ์ ์๋ค๋ฉด ํด๋น ์ฌ์ดํธ๋ ์ ์์ ์ผ๋ก ๋ด ์ธ์ ์ ํ์ทจํ๊ฑฐ๋ ๋ค๋ฅธ ํ๋์ ํ ์ ์๋ค. ๊ทธ๋์ ๋ธ๋ผ์ฐ์ ์์๋ ์ด๋ฌํ ์์ฒญ์ ๋ง์ต๋๋ค. ํผ์ฑ์ฌ์ดํธ๊ฐ ๋ํ์ ์ธ ๊ณต๊ฒฉ ์ฌ๋ก๋ก ํผ์ฑ์ฌ์ดํธ๊ฐ ์๋ค. ์ด๋ฌํ ๊ฒ์ ๋ง๊ณ ํ์ฉํ origin๋ง ์์ฒญํ๊ธฐ ์ํด CORS๊ฐ ํ์ํ๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ ๋ ์ถ๊ฐ์ ์ธ ํค๋์ ์ ๋ณด๋ฅผ ๋ด๋๋ค. ๋ด origin์ ๋ฌด์์ด๊ณ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์์ฒญ์ ํ ๊ฒ์ด๊ณ ์ด๋ค ํค๋๋ค์ ํฌํจํ ๊ฒ์ธ์ง๋ฅผ ๋ด์ ์๋ฒ์ ์ ์กํ๋ค. ์๋ฒ๋ ์๋ฒ๊ฐ ์๋ตํ ์ ์๋ origin์ ํค๋์ ๋ด์์ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ธ๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ด ํค๋๋ฅผ ๋ณด๊ณ ํด๋น origin์์ ์์ฒญํ ์ ์๋ค๋ฉด ๋ฆฌ์์ค ์ ์ก์ ํ์ฉํ๊ณ ๋ง์ฝ ๋ถ๊ฐ๋ฅํ๋ค๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
์ฆ. ๋ค๋ฅธ ์น์ฌ์ดํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋ง๊ธฐ ์ํ ๊ฒ์ด๋ค!
๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ด๋ค.

์์ ๊ฐ์ด ์๋ฌ๊ฐ ๋ด๊ณ
ํด๊ฒฐ์ฑ ์ ๋๋ฆ ๊ฐ๋จํ๋ค!
๋ฆฌ์กํธ์์๋ ํ๋ก์ ์ค์ ์ ํตํด ๊ฐ๋จํ๊ฒ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค!๐
package.json์
"proxy": "http://์๋ฒ ๋๋ฉ์ธ"
๋ฅผ ์ถ๊ฐํ๊ณ ,
๋ณธ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ค.
const formData = new FormData();
formData.append("file", file);
// ์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
axios
.post("/api/files-test", formData, {
headers: {
"Content-Type": "multipart/form-data",
},
})
.then((response) => {
// ์๋ต ์ฒ๋ฆฌ
console.log("์์ฒญ ์ฑ๊ณต");
console.log(response);
})
.catch((error) => {
// ์์ธ ์ฒ๋ฆฌ
console.log("์์ฒญ ์คํจ");
console.log(error);
});

ํด๊ฒฐ ์๋ฃ!
์๋ฌ๋ก ์ฉ์ฉ๋งค๋ค๊ฐ ํด๊ฒฐํ์ ๋ ๊ทธ ์์พํจ์ ์ ๋ง ์ง๋ฆฟํ๋ค.
์ ๊ทธ๋ ๊ตฌ๋.. ํ๊ณ ๋์ด๊ฐ๋ ๊ฐ๋ ์ ์ง์ ์๋ฌ๋ก ๋ณด๊ฒ ๋๋ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํด๋์ ๋ํ ์ค์์ฑ์ ๊นจ๋ฌ์ ์ ์์๋ค. ๊ธฐ๋ณธ๊ธฐ ํ์ดํ !