ใฏใใใซ
็ง่ช่บซใไปฅๅSPAใขใใชใฑใผใทใงใณใไฝใฃใฆใใๆไธญใซใชใชใธใณ้ใชใฝใผในๅ
ฑๆ (CORS)ใซ้ขใใใจใฉใผใซใใชใใฏใพใฃใฆใใพใฃใใฎใงใ้ข้ฃ็จ่ชใๆด็ใใ็่งฃใๆทฑใใใใใซใใฎ่จไบใๆธใใใจใซใใพใใใ
ไปฅ้ใฎๆ็ซ ใงใฏใชใชใธใณ้ใชใฝใผในๅ
ฑๆ (CORS)ใ็็ฅใใฆCORSใจๆ่จใใพใใ
ใชใชใธใณใจใฏ
CORSใฎ่งฃ่ชฌใซๅ
ฅใๅใซใใพใใชใชใธใณใจใใใใฎใใ่งฃ่ชฌใใพใใ
MDNใงใฏไปฅไธใฎใใใซๅฎ็พฉใใใฆใใพใใ
ใฆใงใใณใณใใณใใฎใชใชใธใณ (Origin) ใฏใใฆใงใใณใณใใณใใซใขใฏใปในใใใใใซไฝฟใใใ URL ใฎ ในใญใผใ ๏ผใใญใใณใซ๏ผใ ใในใ ๏ผใใกใคใณ๏ผใ ใใผใ็ชๅท ใซใใฃใฆๅฎ็พฉใใใพใใในใญใผใ ใใในใใใใผใ็ชๅทใใในใฆไธ่ดใใๅ ดๅใฎใฟใ 2 ใคใฎใชใใธใงใฏใใฏๅใใชใชใธใณใงใใใจ่จใใพใใ
็ซฏ็ใซ่จใใจใURLๅ
ใฎใในใญใผใ ๏ผFQDN(ใในใ+ใใกใคใณ)๏ผใใผใ็ชๅทใใฎใใจใงใใ
ไธๅณใ ใจhttps://www.aaa.com:443ใใชใชใธใณใจใใใใจใซใชใใพใใ
ใใใไธ่ฌ็ใซใใผใ็ชๅทใฏ็็ฅใใใใฎใงใhttps://www.aaa.comใพใงใใชใชใธใณใจใใฆๆฑใใพใใ
ๆฌกใซใCORSใจๅใฃใฆใๅใ้ขใใชใ้ขไฟใงใใๅไธใชใชใธใณใใชใทใผ(SOP)ใซใคใใฆ่งฃ่ชฌใใพใใ
ๅไธใชใชใธใณใใชใทใผ(SOP)ใจใฏ
MDNใงใฏ
ๅไธใชใชใธใณใใชใทใผใฏ้่ฆใชใปใญใฅใชใใฃใฎไป็ตใฟใงใใใใใใชใชใธใณใซใใฃใฆ่ชญใฟ่พผใพใใๆๆธใในใฏใชใใใใไปใฎใชใชใธใณใซใใใชใฝใผในใซใขใฏใปในใงใใๆนๆณใๅถ้ใใใใฎใงใใ
็ซฏ็ใซ่จใใจใๅไธใชใชใธใณใใชใทใผ(SOP)ใจใฏใใใใใชใชใธใณใใๅๅพใใใชใฝใผในใใใๅฅใฎใชใชใธใณใฎใชใฝใผในใธใฎใขใฏใปในใ็ฆๆญขใใใใฉใฆใถใฎๆฉ่ฝใใฎใใจใงใใ
- aใใใชใฝใผในAใซใขใฏใปในใใๅ ดๅใฏๅๅพใซๆๅใ
- aใใใชใฝใผในBใซใขใฏใปในใใๅ ดๅใฏๅๅพใซๅคฑๆใ
ใคใพใใhttps://aaa.com/ใใๅๅพใใaใใผใธใซใใใฆใๅใใชใชใธใณใงใใhttps://aaa.com/AใฎใชใฝใผในAใฏๅๅพใใฆ็ป้ขใซ่กจ็คบใงใใใฎใซๅฏพใใ็ฐใชใใชใชใธใณใงใใhttps://bbb.com/BใฎใชใฝใผในBใฏๅๅพใงใใใซ็ป้ขใซ่กจ็คบใใใชใใจใใใใจใซใชใใพใใใใใๅไธใชใชใธใณใใชใทใผ(SOP)ใงใใ
ใกใชใฟใซใSOPใจใฏใSame-Origin Policyใใฎ็ฅใซใชใใพใใ
ใใใใๆฌ้กใฎCORSใซใคใใฆ่งฃ่ชฌใใพใใ
CORSใจใฏ
MDN ใงใฏ
ใชใชใธใณ้ใชใฝใผในๅ ฑๆ (Cross-Origin Resource Sharing, CORS) ใฏใ่ฟฝๅ ใฎ HTTP ใใใใผใไฝฟ็จใใฆใใใใชใชใธใณใงๅไฝใใฆใใใฆใงใใขใใชใฑใผใทใงใณใซใ็ฐใชใใชใชใธใณใซใใ้ธๆใใใใชใฝใผในใธใฎใขใฏใปในๆจฉใไธใใใใใใฉใฆใถใผใซๆ็คบใใใใใฎไป็ตใฟใงใใ
็ซฏ็ใซ่จใใจใCORSใจใฏใๅไธใชใชใธใณใใชใทใผ(SOP)ใฎๅถ้ใๅ้ฟใใ้ใซๅฉ็จใใๆฉ่ฝใฎใใจใ็ฐใชใใชใชใธใณใใใฎใขใฏใปในใ่จฑๅฏใงใใไป็ตใฟใใงใใ
ใกใชใฟใซCORSใฏใCross-Origin Resource Sharingใใฎ็ฅใซใชใใพใใ
้ๅธธใใใใชใชใธใณ(ไธ่จๅ็
งhttp://localhost:3000)ใใใ็ฐใชใใชใชใธใณ(http://localhost:5000)ใซๅฏพใใฆใชใฝใผในใ่ชญใฟ่พผใใใจใใๅ ดๅใๅไธใชใชใธใณใใชใทใผ(SOP)ใๆฉ่ฝใใฆไปฅไธใฎใใใชใจใฉใผใๅบๅใใใพใใ
Access to XMLHttpRequest at 'http://localhost:5000' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
ใใฎใจใฉใผใๅ้ฟใใฆ็ฐใชใใชใชใธใณใใใฎใชใฝใผในใ่ชญใฟ่พผใใซใฏใใใใฏใจใณใๅดใงHTTPใใใใผใฎ1ใคใงใใAccess-Control-Allow-Originใใฌในใใณในใซ่จญๅฎใใๅฟ
่ฆใใใใพใใ
Access-Control-Allow-Originใจใฏใใชใชใธใณ้ใชใฝใผในๅ ฑๆ๏ผCORS๏ผใฎไธ้จใจใใฆไฝฟ็จใใใHTTPใใใใผใงใใใใฎใใใใผใฏใใฏใฉใคใขใณใใ่จฑๅฏใใใใชใชใธใณใใใฎใชใฝใผในใๅใๅใใใจใใงใใใใฉใใใ็คบใใพใใ
ๅ
ทไฝไพใจใใฆใใใใฏใจใณใๅดใงAccess-Control-Allow-Originใใฌในใใณในใซ่จญๅฎใใใณใผใใไธ่จใซใชใใพใใใใฎใณใผใNode.jsใไฝฟ็จใใฆใใพใ(ใใฌใผใ ใฏใผใฏใฏExpress)
const express = require('express');
const app = express();
// ใใใซใฆใงใข่จญๅฎ
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', 'http://localhost:3000');
next();
});
ไธ่จใฎใณใผใใ่จ่ฟฐใใใใจใซใใใใฏใฉใคใขใณใ(http://localhost:3000)ใ่จฑๅฏใใใใชใชใธใณ(http://localhost:5000)ใใใฎใชใฝใผในใใใฉใฆใถใๆๅฆใใใใจใชใๅใๅใไบใๅฏ่ฝใจใชใใพใใ
ใพใCORSใฏใใทใณใใซใชใฏใจในใใจใใชใใฉใคใใชใฏใจในใใฎ2ใคใฎ็ฐใชใใชใฏใจในใใฟใคใใๅฎ็พฉใใฆใใพใใ
ๆๅใซใใทใณใใซใชใฏใจในใใซใคใใฆ่งฃ่ชฌใใพใใ
ใทใณใใซใชใฏใจในใ
ใทใณใใซใชใฏใจในใ(ๅ็ดใชใฏใจในใ)ใจใฏใไปฅไธใฎๆกไปถใใในใฆๆบใใใชใฏใจในใใฎใใจใๆใใพใใ
1. ใกใฝใใใฏๅณ่จใฎใใใใใงใใ: GETใHEADใPOST
2. HTTPใใใใผใฏไธ่จไปฅๅคๅซใพใใฆใใชใใ
- Accept
- Accept-Language
- Content-Language
- Content-Type๏ผใใ ใใไปฅไธใฎใใใใใฎๅคใซๅถ้ใใใ: application/x-www-form-urlencodedใmultipart/form-dataใtext/plain
MDNใงๅฎ็พฉใใใฆใใ ใทใณใใซใชใฏใจในใ ใๅใใใฆใ็ขบ่ชใใ ใใใ
ใฏใฉใคใขใณใใใFetchAPIใชใฉใๅฉ็จใใฆ้ใใใใชใฏใจในใใใไธ่จใฎ่ฆไปถใๆบใใใทใณใใซใชใฏใจในใใ ใฃใๅ ดๅใฏใใตใผใใผๅดใฎใฌในใใณในใใใใผใซๆข่ฟฐใฎAccess-Control-Allow-Originใฎใฟ่จญๅฎใใใฐใใฏใฉใคใขใณใ๏ผใใฉใฆใถ๏ผใใชใฝใผในใซใขใฏใปในใงใใใใใชใใพใใ
ใใใใไธ่จใฎใทใณใใซใชใฏใจในใใใๅฐใใงใๆกไปถใๅคใใใชใฏใจในใใฎๅ ดๅใฏใใใฉใฆใถใฏใใชใใฉใคใใชใฏใจในใ(ๅพ่ฟฐ)ใจใใใใฎใ้ไฟกใใพใใ
ๆฌกใซใใใชใใฉใคใใชใฏใจในใใซใคใใฆ่งฃ่ชฌใใพใใ
ใใชใใฉใคใใชใฏใจในใ
ใใชใใฉใคใใชใฏใจในใใฏใทใณใใซใชใฏใจในใใฎๆกไปถใๆบใใใชใๅ ดๅใซ่กใใใใชใฝใผในใขใฏใปในใฎใใใฎไบๅใฎใขใฏใปในใๆฟ่ชใใใใใฎใใฎใใใไผบใใใฎใใใชใใฎใซใชใใพใใ
const express = require('express');
const app = express();
// ใใใซใฆใงใข่จญๅฎ
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', 'http://localhost:3000');
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
- ใใชใใฉใคใใชใฏใจในใใฏOPTIONSใกใฝใใใง่กใใใAccess-Control-Request-MethodใใใใผใAccess-Control-Request-Headersใใใใผใชใฉใฎๆ ๅ ฑใๅซใพใใพใใ
- ใตใผใใผใฏใใชใใฉใคใใชใฏใจในใใๅใๅใฃใๅพใAccess-Control-Allow-OriginใใใใผใAccess-Control-Allow-MethodsใใใใผใAccess-Control-Allow-Headersใใใใผใชใฉใๅซใใฌในใใณในใ่ฟใใพใใ
- ใใฉใฆใถใใใชใใฉใคใใชใฏใจในใใฎใฌในใใณในใๅใๅใใใตใผใใผใฎ่จญๅฎใ่จฑๅฏใใใใชใฏใจในใใงใใใใจใ็ขบ่ชใใๅพใๅฎ้ใฎใชใฏใจในใใ้ไฟกใใฆใชใฝใผในใซใขใฏใปในใใพใใ
ใพใจใ
็งใชใใซใพใจใใใจใCORSใฏใๅไธใชใชใธใณใใชใทใผ(SOP)ใซใใๅถ้ใใใใฃใใพใพใ ใจใๅฅใฎใชใชใธใณใใใฎfetchAPIใชใฉใฎใชใฏใจในใใๅใใใชใใฎใงใใใใ็ทฉๅใใใใใฎใใฉใฆใถใซๅใใฃใๆฉ่ฝใใจ่จใๆใใใใใฎใใชใจๆใใพใใ
ใพใCORSใฏใใทใณใใซใชใฏใจในใใจใใชใใฉใคใใชใฏใจในใใฎ2ใคใฎ็ฐใชใใชใฏใจในใใฟใคใใๅฎ็พฉใใฆใใใใใใใใตใผใใผๅดใง้ฉๅใชHTTPใใใใผใ่จญๅฎใใๅฟ
่ฆใใใใพใใ
ใใใใซ
ใใใพใง่จไบใใ่ฆงใใใ ใใใใใใจใใใใใพใใใ
ใใฎ่จไบใ่ฆใฆใใใ ใใๆนใใCORSใซใคใใฆ็่งฃใๅฐใใงใๆทฑใพใฃใใจใใใๅฌใใใงใใ
้้ใใชใฉใใใพใใใใๆๆใใใ ใใใจๅนธใใงใใ
ๅ่



Comments
Let's comment your feelings that are more than good