Dva: ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ ๊ฐ€์ ธ ์˜ค๊ธฐ

์— ๋งŒ๋“  2016๋…„ 11์›” 17์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dvajs/dva

๋ชจ๋ธ ๋ ˆ์ด์–ด ํšจ๊ณผ์—์„œ ์„œ๋น„์Šค ๋ ˆ์ด์–ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// ๅผ•ๅ…ฅservice
import { login } from '../services/authentication';
// effects
*login({ payload: { currentUser } }, { select, call, put }) {
      const data = yield call(login, {
        "mobile": currentUser.userName,
        "password": currentUser.password
      });
      console.log('my response data is:', data);

๋ธŒ๋ผ์šฐ์ €๋ณด๊ธฐ ์„œ๋ฒ„ ์š”์ฒญ์€ ์ •์ƒ์ด์ง€๋งŒ ์ธ์‡„ ๋ฐ์ดํ„ฐ๋Š” checkstatus์— ์˜ํ•ด ์ƒ์„ฑ ๋œ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ checkstatus ์ด์ „์— ๋ฆฌํ„ด ๋œ ์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

body:(...)
bodyUsed:false
headers:Headers
    __proto__: Headers
ok:false
status:0
statusText:""
type:"opaque"
url:""

์‹ค๋ก€ํ•ฉ๋‹ˆ๋‹ค, ๋ฌด์—‡์ด ๋ฌธ์ œ์ผ๊นŒ์š”? ๋ธŒ๋ผ์šฐ์ €๋ณด๊ธฐ ์š”์ฒญ์€ 200์˜ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ์–ป์€ http ์ƒํƒœ ์ฝ”๋“œ๋Š” 0์ž…๋‹ˆ๋‹ค. ๋‚ด ํšจ๊ณผ ๋˜๋Š” ๊ฐ€์ ธ ์˜ค๊ธฐ์ž…๋‹ˆ๊นŒ?

277 ๊ทธ๋Ÿฐ๋ฐ ํ—ค๋”๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋ฉฐ dva6.0 ๋ฒ„์ „์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋™ํ˜• ๊ฐ€์ ธ ์˜ค๊ธฐ์˜ ๋ฌธ์ œ์ผ๊นŒ์š”?

faq question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

  1. ๊ฐ€์ ธ ์˜ค๊ธฐ์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ฐพ์ง€ ๋ชปํ–ˆ๊ณ  ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ์ž„์„ ์•Œ๊ธฐ ์œ„ํ•ด Promise ์†”๋ฃจ์…˜ (axios)์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    2. ์ธํ„ฐ๋„ท์—์„œ ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•˜๊ณ , ๋ชจ๋“œ๋ฅผ no-cors๋กœ ์„ค์ •ํ•˜๊ณ  ์šฐํšŒํ–ˆ์Šต๋‹ˆ๋‹ค.
    3. ๋งˆ์ง€๋ง‰์œผ๋กœ fetch์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  fetch์— ๋Œ€ํ•ด ๋” ๊นŠ์ด ์ดํ•ดํ–ˆ๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“œ cors๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    ์š”์•ฝ : ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ํ•ต์‹ฌ์€ xhr ๋ฐ http ํ”„๋กœํ† ์ฝœ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“œ๋ฅผ Cors ๋ฐ no-cors๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ cors๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ์˜ต์…˜ s๋ฅผ ํ†ต๊ณผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜์—ญ.

๋ชจ๋“  18 ๋Œ“๊ธ€

ํšจ๊ณผ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ€์ ธ ์˜ค๊ธฐ์™€ ๊ด€๋ จ์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ต์ฐจ ๋„๋ฉ”์ธ?

๊ต์ฐจ ๋„๋ฉ”์ธ ์š”์ฒญ์„ํ•˜๊ณ  ์š”์ฒญ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด axios๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๊ต์ฐจ ๋„๋ฉ”์ธ์„ ์ง€์›ํ•˜๋ ค๋ฉด ๊ฐ€์ ธ ์˜ค๊ธฐ์— ์–ด๋–ค ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

๊ตฌ์ฒด์ ์œผ๋กœ ์‹œ๋„ํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๊ฐ€์ ธ ์˜ค๊ธฐ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ๋„๋ฉ”์ธ ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ XMLHTTPRequest์™€ ์ผ์น˜ํ•œ๋‹ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ฟ ํ‚ค๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š์•˜๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๊ด€๋ จ์ด ์žˆ์„๊นŒ์š”? https://www.npmjs.com/package/whatwg-fetch#sending -cookies

๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋ฒ„๋Š” GO ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ์„œ๋ฒ„๊ฐ€ ๋„๋ฉ”์ธ ๊ฐ„ ์ง€์› / ํ—ˆ์šฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ํ•œ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋ฐ ์ถ”๊ฐ€ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@xaviertung ์€ ๋ฌธ์ œ๋ฅผ ๋ถ„์„ / ์ฐพ๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•  ์ˆ˜

2016 ๋…„ 11 ์›” 18 ์ผ ์˜ค์ „ 8์‹œ 30 ๋ถ„์— chencheng (ไบ‘ ่ฐฆ) [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์œผ๋กœ ์‹œ๋„ํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๊ฐ€์ ธ ์˜ค๊ธฐ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด ๋„๋ฉ”์ธ ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ XMLHTTPRequest์™€ ์ผ์น˜ํ•œ๋‹ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์ฟ ํ‚ค๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š์•˜๋‹ค๋Š” ์‚ฌ์‹ค๊ณผ ๊ด€๋ จ์ด ์žˆ์„๊นŒ์š”? https://www.npmjs.com/package/whatwg-fetch#sending -cookies https://www.npmjs.com/package/whatwg-fetch#sending -cookies
โ€”
์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub https://github.com/dvajs/dva/issues/282#issuecomment -261413729์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ https://github.com/notifications/unsubscribe-auth/ACv7UniRkGq0Uv8XFBUeNMe5jBeGyWpQks5q_PKgaJpQks5q_PKgaJpQks5q_PKgaJpQks5q 4

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“œ ๋ฐ ์ž๊ฒฉ ์ฆ๋ช… ์„ค์ •์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•, ๊ณ„ํš์— ๋Œ€ํ•ด ์–˜๊ธฐํ•ด ๋ณผ๊นŒ์š”? ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‚˜์ค‘์— ๋งŒ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ฐ€์ ธ ์˜ค๊ธฐ์—์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ฐพ์ง€ ๋ชปํ–ˆ๊ณ  ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ์ž„์„ ์•Œ๊ธฐ ์œ„ํ•ด Promise ์†”๋ฃจ์…˜ (axios)์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    2. ์ธํ„ฐ๋„ท์—์„œ ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•˜๊ณ , ๋ชจ๋“œ๋ฅผ no-cors๋กœ ์„ค์ •ํ•˜๊ณ  ์šฐํšŒํ–ˆ์Šต๋‹ˆ๋‹ค.
    3. ๋งˆ์ง€๋ง‰์œผ๋กœ fetch์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  fetch์— ๋Œ€ํ•ด ๋” ๊นŠ์ด ์ดํ•ดํ–ˆ๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“œ cors๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    ์š”์•ฝ : ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ํ•ต์‹ฌ์€ xhr ๋ฐ http ํ”„๋กœํ† ์ฝœ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“œ๋ฅผ Cors ๋ฐ no-cors๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ cors๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ์˜ต์…˜ s๋ฅผ ํ†ต๊ณผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜์—ญ.

@sorrycc ์„ ์ƒ๋‹˜, ๊ต์ฐจ ๋„๋ฉ”์ธ ๊ฐ€์ ธ ์˜ค๊ธฐ์—๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ ์˜ค๊ธฐ ์š”์ฒญ์„ ์‚ฌ์šฉํ•œ ํ›„ ์ฝ˜์†”์— 200 ์˜ต์…˜ ์š”์ฒญ์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ์€ ์ค‘๋‹จ ์ ์„ ์ž…๋ ฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒ๋‹จ ๋ฐฉ๋ฒ•์€ GET (๋‚ด ์‹ค์ œ ์š”์ฒญ)์ด๊ณ  ํ”„๋ก ํŠธ ์—”๋“œ๋Š” response.json ()์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐ์ดํ„ฐ๋„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ ์ฝ˜์†”์—๋Š” GET ์š”์ฒญ ๊ธฐ๋ก์ด์—†๊ณ  ์˜ต์…˜ ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ajax๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ์ฝ˜์†”์—๋Š” ์˜ต์…˜ ๋ฐ GET ์š”์ฒญ์ด ๋ชจ๋‘ ์žˆ์Šต๋‹ˆ๋‹ค.

@AsceticBoy ๋Š” ์ฝ˜์†”์— ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@xaviertung ๊ต์ฐจ ์‚ฌ์ดํŠธ ํ”„๋ŸฐํŠธ ์—”๋“œ๋Š” ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜๊ธฐ
ํ—ค๋”์— ์ž๊ฒฉ ์ฆ๋ช… : 'include'๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์š”์ฒญ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜ค๋ฅ˜๋ฅผ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์ง€๊ธˆ์€ ๋””๋ฒ„๊น…์ด ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋งค๋ฒˆ ๋น„์šฉ ๋„๋ฉ”์ธ์„ ๋ณ€๊ฒฝ ํ•œ ๋‹ค์Œ ํ”„๋ŸฐํŠธ ์—”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ๋””๋ฒ„๊น…์„ ์œ„ํ•ด ๋ฐฑ ์—”๋“œ ํ”„๋กœ์ ํŠธ์— ๋„ฃ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” nginx + tomcat (๋ด„) ๋ฐฑ์—”๋“œ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

@wuyongdec ์€ ๋„๋ฉ”์ธ ๊ฐ„ ๊ตฌ์„ฑ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๊ฐ€ ์—ด๋ ค ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@wuyongdec dora๋Š” ๋„๋ฉ”์ธ ๊ฐ„ ๋””๋ฒ„๊น…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

@xaviertung ์„œ๋ฒ„๊ฐ€ ์—ด๋ ธ์ง€๋งŒ ์ž๊ฒฉ ์ฆ๋ช… : 'include'๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์„ ๋•Œ ์„œ๋ฒ„๊ฐ€ ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@jingchenxu ๋ฌธ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

.roadhogrc์—์„œ ํ”„๋ก์‹œ๊ฐ€ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กฌํ”„ํŠธ๋Š” ๋„๋ฉ”์ธ ๊ฐ„ ๋ฌธ์ œ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ์˜ http://jsonplaceholder.typicode.com/ ์„ ์ž์‹ ์˜ ์„œ๋ฒ„ ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.
"proxy": { "/api": { "target": "http://jsonplaceholder.typicode.com/", "changeOrigin": true, "pathRewrite": { "^/api" : "" } } }

@wuyongdec ๋‚˜๋„ ๋‹น์‹ ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ํ–ˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

๋„๋ฉ”์ธ ๊ฐ„ ๊ตฌ์„ฑ์„ ์œ„ํ•ด ํ”„๋ŸฐํŠธ ์—”๋“œ์™€ ๋ฐฑ ์—”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜์‹ญ์‹œ์˜ค! ! ! ๋น„ ์ฟ ํ‚ค ์ธ์ฆ, JWT ์ธ์ฆ ๊ตฌ์„ฑ! !
๋„๋ฉ”์ธ ๊ฐ„ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ฌด๋Šฅ๋ ฅ์„ ํ•ด๊ฒฐํ•˜๊ณ ,
๋จผ์ € config.js์— ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.์ด ๊ตฌ์„ฑ์€ ๋กœ์ปฌ ๊ฐœ๋ฐœ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋นŒ๋“œ ํ›„์—๋Š” ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ณ„ํš:
.env์—์„œ ๊ตฌ์„ฑ (์•„๋‹ˆ๋ผ๋ฉด ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑ)
API๋ฅผ ์š”์ฒญํ•  ๋•Œ ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค. (request.js ์ˆ˜์ •)

nghin / apache / php ์„œ๋ฒ„ ํ”Œ๋Ÿฌ์Šค
add_header Access-Control-Allow-Origin * always; ### (Nginx 1.7.5 ์ดํ›„)

add_header Access-Control-Allow-Methods GET, POST, OPTIONS, HEAD, PUT;
add_header Access-Control-Allow-Headers "Authorization, Content-Type";

ํ”„๋ŸฐํŠธ ์—”๋“œ ํŽœ์น˜ :
credentials : 'omit'// ์ด๊ฒƒ์€ ์ฟ ํ‚ค๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š์œผ๋ฉฐ ๊ต์ฐจ ๋„๋ฉ”์ธ ์š”์ฒญ์ด ํ•„์š”ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋จธ๋ฆฌ๊ธ€:{
์ธ์ฆ : localStorage.getItem ( 'login-token'),
}

์ด ์ค‘ "๊ถŒํ•œ ๋ถ€์—ฌ"๋Š” ์„œ๋ฒ„ ์ธก ์ธ์ฆ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์„œ ํ•œ ์ผ์„ ๊ธฐ๋กํ•˜์‹ญ์‹œ์˜ค.
๋„๋ฉ”์ธ ์ด๋ฆ„์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ๊ฐ€ ๊ต์ฐจ ๋„๋ฉ”์ธ์„ ์ง€์›ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
200400500์— ๊ด€๊ณ„์—†์ด Access-Control-Allow-Origin ๋ฐ ๊ธฐํƒ€ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ๋‘ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๊ฐ€์ ธ ์˜ค๊ธฐ ํ—ค๋”์—์„œ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

{
  mode: 'cors',
  credentials: 'include',
}

nginx ์„œ๋ฒ„๋Š” ๋‹ค์Œ ํ—ค๋”๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

add_header Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization,sbid
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Origin: ไฝ ็š„ๅŸŸๅ

ํ˜„์žฌ ๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ๋“ฑ์€ ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด nginx๋Š” 401์„ ๋ฐ˜ํ™˜ ํ•  ๋•Œ Access-Control-Allow-Origin ๋ฐ ๊ธฐํƒ€ ์ •๋ณด๋ฅผ ์†์‹คํ•˜์—ฌ 401 (https://github.com/github/fetch/issues/201)์—์„œ ์‘๋‹ต ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. # issuecomment-141777867)
์†”๋ฃจ์…˜, nginx๋Š” ํ•ญ์ƒ ์ถ”๊ฐ€
๊ตฌ๋ฌธ : | add_header ์ด๋ฆ„ ๊ฐ’ [ํ•ญ์ƒ];
http, ์„œ๋ฒ„, ์œ„์น˜ (์œ„์น˜์—์žˆ๋Š” ๊ฒฝ์šฐ)

server {
  listen       80;
  server_name  www.google.com;

  #charset koi8-r;
  #access_log  /var/log/nginx/host.access.log  main;

  location / {
    if ($request_method = 'OPTIONS') { 
      add_header Access-Control-Allow-Origin 'http://www.baidu.com' always;
      add_header Access-Control-Allow-Credentials 'true' always; 
      add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
      add_header Access-Control-Allow-Headers 'Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization,sbid' always;    
      return 200; 
    }

    root   /home/wwwroot/php;
    index  index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
    add_header Access-Control-Allow-Origin 'http://www.baidu.com' always;
    add_header Access-Control-Allow-Credentials 'true' always; 
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS' always;
    add_header Access-Control-Allow-Headers 'Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization,sbid' always;  
    root /home/wwwroot/php/;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME           $document_root$fastcgi_script_name;
    include fastcgi_params;
  }  
}

server {
  listen       80;
  server_name  www.baidu.com;

  #charset koi8-r;
  #access_log  /var/log/nginx/host.access.log  main;

  location / {
    root   /home/wwwroot/view;
    try_files $uri $uri/ /index.html;
  }  
}
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰