[Vue.js] xhr.js?1a5c:210 GET http://**/api/support/devInquryList 404 (Not Found) & CORS Error

2022. 3. 15. 00:20ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/๋ฌธ์ œ ์ •๋ฆฌ

728x90
๋ฐ˜์‘ํ˜•

 

โš ๏ธ ๋ฌธ์ œ ๋ฐœ์ƒ!

Q&A ๊ฒŒ์‹œํŒ ๋ชฉ๋ก ์กฐํšŒ

 

๋ถ„๋ช… axio๋„ ์„ค์น˜ ํ–ˆ๊ณ , API๋„ ๋งŒ๋“ค์—ˆ๊ณ , router ๊ธฐ๋Šฅ๋„ ๋„ฃ์–ด์คฌ๋Š”๋ฐ, ์™œ Back End ์™€ Front End๋Š” ๋งŒ๋‚˜์ง€ ๋ชปํ•˜๊ณ , ์ด๋Ÿฌ๊ณ  ์žˆ์„๊นŒ์š”?

 

 

๐Ÿค” ์›์ธ ๋ถ„์„

 


๊ณฐ๊ณฐํžˆ ์ƒ๊ฐ ํ•ด๋ณด๋‹ˆ ์ฃผ๋‹ˆํ•˜๋ž‘์€ ๋˜ ํ•˜๋‚˜๋ฅผ ๋น ๋œจ๋ฆฐ ๊ฒƒ์ด์—์š”. ๋ฐ”๋กœ Vue์— URL ์„ค์ •์„ ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด์—์š”.

axios์— Back End URI๋Š” ์„ค์ • ํ•ด ๋†“๊ณ , ์ •์ž‘ ์ ‘๋‘์‚ฌ๋ฅผ ๋นผ ๋จน์—ˆ์œผ๋‹ˆ ๋‹น์—ฐํžˆ Front End๋Š” '๊ทธ๋ž˜์„œ ์–ด๋””๋กœ ๊ฐ€๋ผ๋Š” ๊ฑฐ์ง€?'๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

์ผ๋‹จ ๊ทผ๋ณธ์ ์ธ ์›์ธ์„ ์ฐพ๊ธฐ ์œ„ํ•ด API ์ชฝ์— ํ•˜๋“œ์ฝ”๋”ฉ์„ ํ•ด๋ณด๊ธฐ๋กœ ํ•œ ๊ฒƒ์ด์—์š”.

devInquryApi.js

 

 

 

์ด๋ ‡๊ฒŒ ํ•ด ์ฃผ๋‹ˆ Front๊ฐ€ Back End๋ฅผ ๋งŒ๋‚˜๋Ÿฌ ๊ฐ€๊ธด ํ–ˆ๋Š”๋ฐ, Back End๊ฐ€ ๋งค๋ชฐ์ฐจ๊ฒŒ ๊ฑฐ์ ˆํ•œ ๊ฒƒ ๊ฐ™์€ ๊ฒƒ์ด์—์š”. ๋ฐ”๋กœ CORS Error๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด์—์š”. 

 

์ด๋ฒˆ์—๋Š” vue.config.js๋ฅผ ์ข€ ์ˆ˜์ • ํ•ด ๋ณด๊ธฐ๋กœ ํ•œ ๊ฒƒ์ด์—์š”.

 

vue.config.js

 

 

 

ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒ ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š” ๐Ÿฅฒ

 

 

 

 

๐Ÿป ๋ฌธ์ œ ํ•ด๊ฒฐ!

์œ„์˜ ๋ฌธ์ œ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๊ฒƒ์ด์—์š”.
๋จผ์ € ์ฃผ๋‹ˆํ•˜๋ž‘์ด ์ฝ”๋”ฉํ•œ `devInquryList.vue`์—์„œ๋Š” axios๋ฅผ ํ†ตํ•ด Back End์—๊ฒŒ Get์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์žˆ๋Š”๋ฐ,

 

Data() ์—์„œ Back End์—๊ฒŒ ๋ณด๋‚ผ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณ€์ˆ˜๋“ค์„ ์œ„์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด ์ฃผ๊ณ ,

 

 

searchList() ๋ผ๋Š” ๊ณณ์—์„œ devInqrutyList์— ์œ„์—์„œ ์„ค์ •ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’๋“ค์„ ๋„ฃ๊ณ , ํ˜ธ์ถœ์„ ํ•˜๊ฒŒ ๋˜๋ฉด 

 

devInquryApi.js

 

axios๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณณ์— ์œ„์น˜ํ•œ ํ•ด๋‹น Method์— ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’์ด ์ „๋‹ฌ๋˜๋ฉด์„œ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด์—์š”.
์ฃผ๋‹ˆํ•˜๋ž‘์€ ์œ„์—์„œ 'get'์„ ํ–ˆ๋Š”๋ฐ, `data: params`๋ฅผ ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด Request Body์— ๊ฐ’์„ ๋„ฃ์–ด ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

์ถœ์ฒ˜ : https://www.w3schools.com/tags/ref_httpmethods.asp

๋ฐ˜์‘ํ˜•

 

Get Method๋Š” ์œ„์™€ ๊ฐ™์ด URL์„ ํ†ตํ•ด์„œ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๋Š” Query String ๋“ฑ์„ ์ด์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, Request Body์—๋‹ค๊ฐ€ ๊ณ„์† ๊ฐ’์„ ๋„ฃ์–ด์„œ ๋ณด๋‚ด๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ์ด์—์š”.

 

๋ฌผ๋ก  ์กฐํšŒ๋Š” Get์„ ํ†ตํ•ด์„œ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ๋งž๊ณ , ํ•ด๋‹น Losic์„ Get์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋งž์ง€๋งŒ, ์ผ๋‹จ ์ด๋Œ€๋กœ ์ง„ํ–‰์„ ํ•ด ๋ณด๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด์—์š”. 

 

Back End - devInqquryList Controller Method

 

Back End์—์„œ๋„ ์›๋ž˜๋Š” Get ๋ฐฉ์‹์œผ๋กœ ์„ค์ •์„ ํ•ด ๋‘์—ˆ๋Š”๋ฐ, ์œ„์™€ ๊ฐ™์ด Pos๋กœ ๋ณ€๊ฒฝ์„ ํ•ด ์ค€ ๊ฒƒ์ด์—์š”.

 

 

๋‘๋ฒˆ์งธ ๋ฌธ์ œ๋Š” ๋ฐ”๋กœ CORS Error์ธ ๊ฒƒ์ด์—์š”. 

Back End WebConfig.java

 

WebMvcConfigurer๋ฅผ ๊ตฌํ˜„ํ•œ Class๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ , addCorsMappings๋ผ๋Š” Method๋ฅผ Overrideํ•˜์—ฌ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์„ค์ •์„ ํ•ด ์ฃผ๋ฉด ๋˜๋Š”๋ฐ, addMapping์„ ํ†ตํ•ด Pattern ํ˜•์‹์œผ๋กœ URL์„ ์„ค์ •ํ•˜์—ฌ ํ•ด๋‹น URL์— ๋Œ€ํ•ด CORS๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

addowedOrigins๋ฅผ ํ†ตํ•ด ์ž์› ๊ณต์œ ๋ฅผ ํ—ˆ๋ฝํ•  Origins๋ฅผ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์‰ฝ๊ฒŒ ๋งํ•ด Back End Server์— ์ ‘์†์„ ํ—ˆ์šฉํ•  Client์˜ URL์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

๋งˆ์ง€๋ง‰ allowedMethod๋Š” Client์—์„œ ์š”์ฒญ์‹œ์— ์‚ฌ์šฉํ•  HTTP Method ์ค‘์— ํ—ˆ์šฉํ•  ๊ฒƒ๋งŒ ๊ณจ๋ผ์„œ ํ—ˆ์šฉ์„ ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

 

์ด๋ ‡๊ฒŒ ๋ชฉ๋ก์ด ์ž˜ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”!

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•