⊗jsSpAXCP 258 of 294 menu

자바스크립트 AJAX 요청의 CORS 정책

AJAX를 통해 다른 사이트(cross-origin requests)로 요청을 마음대로 보낼 수는 없습니다. 이러한 요청은 CORS 정책에 의해 규제됩니다. 간단히 말해, 이 정책에 따르면 요청을 보내는 대상 사이트가 응답에 동의해야 합니다. 이를 위해 해당 사이트는 적절한 HTTP 헤더를 반환해야 합니다.

실제로 한번 해보겠습니다. 두 개의 테스트 서버를 다른 포트에서 실행해 보겠습니다. 첫 번째는 3001 포트에서, 두 번째는 3002 포트에서 실행합니다. 두 번째 사이트에서 첫 번째 사이트로 AJAX 요청을 보내 보겠습니다.

첫 번째 사이트가 다음과 같은 요청을 받도록 해봅시다:

export default { '/handler/': function({ body }) { console.log(body); return 'success'; } }

두 번째 사이트에서 첫 번째 사이트로 요청을 보내겠습니다:

button.addEventListener('click', function() { let promise = fetch('http://localhost:3001/handler/', { method: 'post', body: JSON.stringify([1, 2, 3, 4, 5]), headers: { 'Content-Type': 'application/json', }, }); });

결과적으로 요청은 실행되지 않고, 브라우저 콘솔에서 CORS 정책과 관련된 오류를 보게 될 것입니다.

요청이 실행되려면, 첫 번째 서버가 특수한 HTTP 헤더를 반환해야 합니다. 이 헤더들을 지정해 보겠습니다. 그러면 두 번째 사이트에서 첫 번째 사이트로의 요청이 통과되기 시작할 것입니다:

export default { '/handler/': function({ body, resp }) { resp.setHeader('Access-Control-Allow-Origin', '*'); resp.setHeader('Access-Control-Allow-Headers', '*'); console.log(body); return 'success'; } }
한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부