[React Native] IOS Axios Network Error ํ•ด๊ฒฐ

hidden_ยท2022๋…„ 11์›” 24์ผ
0

React Native ๊ฐœ๋ฐœ๊ณผ์ •

๋ชฉ๋ก ๋ณด๊ธฐ
4/4

๐Ÿ’ก์„œ๋ฌธ

๋จผ์ € cors์—๋Ÿฌ๋ผ๋˜์ง€, ํ˜น์€ ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ๋ผ๋˜์ง€ ์–ด๋””๊ฐ€ ๋ฌธ์ œ์ธ์ง€ ์ •ํ™•ํžˆ ํŒŒ์•…์ด ์•ˆ๋œ ์ƒํƒœ์˜ ์—๋Ÿฌ๋ผ๋ฉด, ๋‚˜์˜ ํ˜„์žฌ ์ƒํ™ฉ๊ณผ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ๋ฐฉ๋ฌธํ•˜๋Š” ๋งŽ์ด ์‚ฌ์ดํŠธ์˜ ์ƒํ™ฉ์„ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š”๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :)
๊ฐ™์€ ์—๋Ÿฌ๋ผ๋„ ๋ฐœ์ƒ์‹œ์ ์ด ๋‹ค ๋‹ค๋ฅด๋‹ˆ๊น์š”

๐Ÿง๋ฌธ์ œ์ƒํ™ฉ

๋กœ์ปฌ์— 8999 ํฌํŠธ๋กœ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์„œ๋ฒ„๋Š” spring boot + jpa๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด ์คฌ๋Š”๋ฐ์š”, ios ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ expo ์•ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ํœด๋Œ€ํฐ์œผ๋กœ ์ ‘์†์„ ํ–ˆ๋Š”๋ฐ, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํŒจ์น˜ํ•˜๋Š” ๊ณผ์ •์—์„œ Axios Network ์—๋Ÿฌ๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์„œ๋ฒ„์—์„œ ๋ชจ๋“  ๊ฒฝ๋กœ์˜ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

WebConfig.java

...
 @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**").allowedMethods("*")
        .allowedOriginPatterns("*")
        .allowedHeaders("*")
        .allowCredentials(true);
  }
...

๐Ÿ”ํ•ด๊ฒฐ

๋ณดํ†ต ์•ฑ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์›น์„ ๋งŒ๋“ค๋•Œ, ํ•ด๋‹น ๋…ธํŠธ๋ถ/๋žฉํƒ‘ ์—์„œ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋‚˜ ์›น์„ ๋„์›Œ์„œ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋ณด๋‹ˆ, axios url์†์— localhost ๋ฅผ ์ž‘์„ฑํ–ˆ๋”๊ตฐ์š”

[ ๋ณ€๊ฒฝ ์ „ ]

function createInstaceWithAuth(url) {
  return axios.create({
    baseURL: `localhost:8999/${url}`,
    responseType: 'json',
    withCredentials: true,
  })
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ œ ํœด๋Œ€ํฐ์ด localhost๋ฅผ ์ž˜ ์บ์น˜ํ• ๋ฆฌ๊ฐ€ ์—†์ฃ  .

๊ทธ๋ž˜์„œ ํ˜„์žฌ IP ์ฃผ์†Œ๋ฅผ ๋ฐ›์•„, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ baseURL์„ ์ƒ์„ฑํ•ด์ฃผ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค!

[ ๋ณ€๊ฒฝ ํ›„ ]

import axios from 'axios'
import Constants from 'expo-constants'  //ํ˜„์žฌ ๋‹จ๋ง๊ธฐ์˜ ์‹œ์Šคํ…œ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•จ

const { manifest } = Constants

function createInstaceWithAuth(url) {
  return axios.create({
    baseURL: `http://${manifest.debuggerHost.split(':').shift()}:8999/${url}`,
    responseType: 'json',
    withCredentials: true,
  })
}

[์ฐธ๊ณ ]
https://docs.expo.dev/versions/latest/sdk/constants/

profile
steady

0๊ฐœ์˜ ๋Œ“๊ธ€