2 min read

Axios Header์— ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ์žˆ์„๊ฒฝ์šฐ ์—๋Ÿฌ์ฒ˜๋ฆฌ

Table of Contents

๐Ÿ‘€ ์›์ธ

axios๋ฅผ ์ด์šฉํ•ด์„œ API ํ†ต์‹ ์„ ํ•˜๋˜ ๋„์ค‘, ์ „ํ˜€ ํ†ต์‹ ์ด ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

๋ฌธ์ œ๋Š” axios header์— ์ •๋ณด๋ฅผ ๋„˜๊ธธ ๋•Œ, ์˜๋„์น˜์•Š๊ฒŒ ํŠน์ˆ˜๋ฌธ์ž ์•„ํผ์ŠคํŠธ๋กœํ”ผ(โ€™)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ ์—๋Ÿฌ๋‚˜ ์‘๋‹ต์ด ํ†ต์‹ ์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ.

์•„ํผ์ŠคํŠธ๋กœํ”ผ (โ€™)์™€ ํ™‘๋”ฐ์˜ดํ‘œ (โ€˜)๋Š” ๋‹ค๋ฅด๋‹ค

์˜ˆ์‹œ

๐Ÿ˜ ๊ธฐ๋Œ€ํ•˜๋˜ ์ƒํ™ฉ

axios.defaults.headers.common["header-sample"] = "header-sample";

axios
  .get("https://jsonplaceholder.typicode.com/todos")
  .then((res) => {})
  .catch((error) => {});

sucess

์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ํ—ค๋” ์ƒ˜ํ”Œ์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์ƒํ™ฉ์„ ๊ธฐ๋Œ€ ํ–ˆ๋‹ค.

๐Ÿ˜ข ์‹คํŒจํ•œ ์ƒํ™ฉ

axios.defaults.headers.common["header-sample"] = "heaโ€™der-sample";

axios
  .get("https://jsonplaceholder.typicode.com/todos")
  .then((res) => {})
  .catch((error) => {});

fail

์•„ํผ์ŠคํŠธ๋กœํ”ผ๊ฐ€ ํฌํ•จ๋˜๋ฉด ์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์•„์˜ˆ ํ†ต์‹  ์ž์ฒด๊ฐ€ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ฑฐ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

โœ… ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

์›น์‚ฌ์ดํŠธ๋ฅผ ์—ฌ๊ธฐ์ €๊ธฐ ๊ฒ€์ƒ‰ํ•ด๋ณธ ๊ฒฐ๊ณผ, ํ•ด๋‹น ๋ฌธ์ œ๋Š”

  • ๋ฐ˜๋“œ์‹œ header์— ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์ผ์–ด๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹˜
  • ์•„ํผ์ŠคํŠธ๋กœํ”ผ๋ผ๋Š” ํŠน์ˆ˜๋ฌธ์ž๋งŒ์˜ ๋ฌธ์ œ๋Š” ์•„๋‹˜. ๋‹ค๋ฅธ ํŠน์ˆ˜๋ฌธ์ž๋„ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ

ํŠน์ˆ˜๋ฌธ์ž๋กœ ์ธํ•ด ๋‚˜ํƒ€๋‚˜๋Š” ์—๋Ÿฌ๋Š” ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ํ”ํžˆ ๊ฒช๋Š” ๋ฌธ์ œ์ด๋ฉฐ, axios๋งŒ์˜ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ xhr์„ ์ด์šฉํ•˜๋‹ค๋ณด๋ฉด ์–ธ์ œ๋“ ์ง€ ๊ฒช์„์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค.

๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๋ฒ•์€ ํ•ด๋‹น ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ replaceํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

let header = "heaโ€™der-sample";
header = header.replace("โ€™", "other");

axios.defaults.headers.common["header-sample"] = header;

axios
  .get("https://jsonplaceholder.typicode.com/todos")
  .then((res) => {})
  .catch((error) => {});

sucess2

์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋‹ค๋ฅธ ๊ธฐํƒ€ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”

encodeURIComponent๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ž๋ฅผ ์ด์Šค์ผ€์ดํ”„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์‚ฌ์‹ค ๋‘˜๋‹ค ๊ฐ™์€ ๋งฅ๋ฝ.

์ฐธ๊ณ 

https://stackoverflow.com/questions/18251399/why-doesnt-encodeuricomponent-encode-single-quotes-apostrophes