CINXE.COM
교차 출처 리소스 공유 (CORS) - HTTP | MDN
<!doctype html><html lang="en-US" prefix="og: https://ogp.me/ns#"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="https://developer.mozilla.org/favicon-48x48.bc390275e955dacb2e65.png"/><link rel="apple-touch-icon" href="https://developer.mozilla.org/apple-touch-icon.528534bba673c38049c2.png"/><meta name="theme-color" content="#ffffff"/><link rel="manifest" href="https://developer.mozilla.org/manifest.f42880861b394dd4dc9b.json"/><link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="MDN Web Docs"/><title>교차 출처 리소스 공유 (CORS) - HTTP | MDN</title><link rel="alternate" title="Cross-Origin Resource Sharing (CORS)" href="https://developer.mozilla.org/de/docs/Web/HTTP/CORS" hrefLang="de"/><link rel="alternate" title="Cross-Origin Resource Sharing (CORS)" href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" hrefLang="en"/><link rel="alternate" title="Intercambio de recursos de origen cruzado (CORS)" href="https://developer.mozilla.org/es/docs/Web/HTTP/CORS" hrefLang="es"/><link rel="alternate" title="Cross-origin resource sharing (CORS)" href="https://developer.mozilla.org/fr/docs/Web/HTTP/CORS" hrefLang="fr"/><link rel="alternate" title="オリジン間リソース共有 (CORS)" href="https://developer.mozilla.org/ja/docs/Web/HTTP/CORS" hrefLang="ja"/><link rel="alternate" title="Cross-Origin Resource Sharing (CORS)" href="https://developer.mozilla.org/pt-BR/docs/Web/HTTP/CORS" hrefLang="pt"/><link rel="alternate" title="Cross-Origin Resource Sharing (CORS)" href="https://developer.mozilla.org/ru/docs/Web/HTTP/CORS" hrefLang="ru"/><link rel="alternate" title="跨源资源共享(CORS)" href="https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS" hrefLang="zh"/><link rel="alternate" title="跨來源資源共享(CORS)" href="https://developer.mozilla.org/zh-TW/docs/Web/HTTP/CORS" hrefLang="zh-Hant"/><link rel="alternate" title="교차 출처 리소스 공유 (CORS)" href="https://developer.mozilla.org/ko/docs/Web/HTTP/CORS" hrefLang="ko"/><link rel="preload" as="font" type="font/woff2" href="/static/media/Inter.var.c2fe3cb2b7c746f7966a.woff2" crossorigin=""/><link rel="alternate" type="application/rss+xml" title="MDN Blog RSS Feed" href="https://developer.mozilla.org/en-US/blog/rss.xml" hrefLang="en"/><meta name="description" content="교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 브라우저가 자신의 출처가 아닌 다른 어떤 출처(도메인, 스킴 혹은 포트)로부터 자원을 로딩하는 것을 허용하도록 서버가 허가 해주는 HTTP 헤더 기반 메커니즘입니다. 또한 CORS 는 교차 출처 리소스를 호스팅하는 서버가 실제 요청을 허가할 것인지 확인하기 위해 브라우저가 보내는 "사전 요청(프리플라이트, Preflight)" 메커니즘에 의존합니다. 이 사전 요청에서 브라우저는 실제 요청에서 사용할 HTTP 메서드와 헤더들에 대한 정보가 표시된 헤더에 담아 보냅니다."/><meta property="og:url" content="https://developer.mozilla.org/ko/docs/Web/HTTP/CORS"/><meta property="og:title" content="교차 출처 리소스 공유 (CORS) - HTTP | MDN"/><meta property="og:type" content="website"/><meta property="og:locale" content="ko"/><meta property="og:description" content="교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 브라우저가 자신의 출처가 아닌 다른 어떤 출처(도메인, 스킴 혹은 포트)로부터 자원을 로딩하는 것을 허용하도록 서버가 허가 해주는 HTTP 헤더 기반 메커니즘입니다. 또한 CORS 는 교차 출처 리소스를 호스팅하는 서버가 실제 요청을 허가할 것인지 확인하기 위해 브라우저가 보내는 "사전 요청(프리플라이트, Preflight)" 메커니즘에 의존합니다. 이 사전 요청에서 브라우저는 실제 요청에서 사용할 HTTP 메서드와 헤더들에 대한 정보가 표시된 헤더에 담아 보냅니다."/><meta property="og:image" content="https://developer.mozilla.org/mdn-social-share.d893525a4fb5fb1f67a2.png"/><meta property="og:image:type" content="image/png"/><meta property="og:image:height" content="1080"/><meta property="og:image:width" content="1920"/><meta property="og:image:alt" content="The MDN Web Docs logo, featuring a blue accent color, displayed on a solid black background."/><meta property="og:site_name" content="MDN Web Docs"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:creator" content="MozDevNet"/><link rel="canonical" href="https://developer.mozilla.org/ko/docs/Web/HTTP/CORS"/><style media="print">.article-actions-container,.document-toc-container,.language-menu,.main-menu-toggle,.on-github,.page-footer,.place,.sidebar,.top-banner,.top-navigation-main,ul.prev-next{display:none!important}.main-page-content,.main-page-content pre{padding:2px}.main-page-content pre{border-left-width:2px}</style><script src="/static/js/gtag.js" defer=""></script><script defer="" src="/static/js/main.7af8d0d7.js"></script><link href="/static/css/main.dd166bd2.css" rel="stylesheet"/></head><body><script>if(document.body.addEventListener("load",(t=>{t.target.classList.contains("interactive")&&t.target.setAttribute("data-readystate","complete")}),{capture:!0}),window&&document.documentElement){const t={light:"#ffffff",dark:"#1b1b1b"};try{const e=window.localStorage.getItem("theme");e&&(document.documentElement.className=e,document.documentElement.style.backgroundColor=t[e]);const o=window.localStorage.getItem("nop");o&&(document.documentElement.dataset.nop=o)}catch(t){console.warn("Unable to read theme from localStorage",t)}}</script><div id="root"><ul id="nav-access" class="a11y-nav"><li><a id="skip-main" href="#content">Skip to main content</a></li><li><a id="skip-search" href="#top-nav-search-input">Skip to search</a></li><li><a id="skip-select-language" href="#languages-switcher-button">Skip to select language</a></li></ul><div class="page-wrapper category-http document-page"><div class="top-banner loading"><section class="place top container"></section></div><div class="sticky-header-container"><header class="top-navigation "><div class="container "><div class="top-navigation-wrap"><a href="/ko/" class="logo" aria-label="MDN homepage"><svg id="mdn-docs-logo" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 694.9 104.4" style="enable-background:new 0 0 694.9 104.4" xml:space="preserve" role="img"><title>MDN Web Docs</title><path d="M40.3 0 11.7 92.1H0L28.5 0h11.8zm10.4 0v92.1H40.3V0h10.4zM91 0 62.5 92.1H50.8L79.3 0H91zm10.4 0v92.1H91V0h10.4z" class="logo-m"></path><path d="M627.9 95.6h67v8.8h-67v-8.8z" class="logo-_"></path><path d="M367 42h-4l-10.7 30.8h-5.5l-10.8-26h-.4l-10.5 26h-5.2L308.7 42h-3.8v-5.6H323V42h-6.5l6.8 20.4h.4l10.3-26h4.7l11.2 26h.5l5.7-20.3h-6.2v-5.6H367V42zm34.9 20c-.4 3.2-2 5.9-4.7 8.2-2.8 2.3-6.5 3.4-11.3 3.4-5.4 0-9.7-1.6-13.1-4.7-3.3-3.2-5-7.7-5-13.7 0-5.7 1.6-10.3 4.7-14s7.4-5.5 12.9-5.5c5.1 0 9.1 1.6 11.9 4.7s4.3 6.9 4.3 11.3c0 1.5-.2 3-.5 4.7h-25.6c.3 7.7 4 11.6 10.9 11.6 2.9 0 5.1-.7 6.5-2 1.5-1.4 2.5-3 3-4.9l6 .9zM394 51.3c.2-2.4-.4-4.7-1.8-6.9s-3.8-3.3-7-3.3c-3.1 0-5.3 1-6.9 3-1.5 2-2.5 4.4-2.8 7.2H394zm51 2.4c0 5-1.3 9.5-4 13.7s-6.9 6.2-12.7 6.2c-6 0-10.3-2.2-12.7-6.7-.1.4-.2 1.4-.4 2.9s-.3 2.5-.4 2.9h-7.3c.3-1.7.6-3.5.8-5.3.3-1.8.4-3.7.4-5.5V22.3h-6v-5.6H416v27c1.1-2.2 2.7-4.1 4.7-5.7 2-1.6 4.8-2.4 8.4-2.4 4.6 0 8.4 1.6 11.4 4.7 3 3.2 4.5 7.6 4.5 13.4zm-7.7.6c0-4.2-1-7.4-3-9.5-2-2.2-4.4-3.3-7.4-3.3-3.4 0-6 1.2-8 3.7-1.9 2.4-2.9 5-3 7.7V57c0 3 1 5.6 3 7.7s4.5 3.1 7.6 3.1c3.6 0 6.3-1.3 8.1-3.9 1.8-2.7 2.7-5.9 2.7-9.6zm69.2 18.5h-13.2v-7.2c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2 5.7 0 9.8 2.2 12.3 6.5V22.3h-8.6v-5.6h15.8v50.6h6v5.5zM493.2 56v-4.4c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm53.1-1.4c0 5.6-1.8 10.2-5.3 13.7s-8.2 5.3-13.9 5.3-10.1-1.7-13.4-5.1c-3.3-3.4-5-7.9-5-13.5 0-5.3 1.6-9.9 4.7-13.7 3.2-3.8 7.9-5.7 14.2-5.7s11 1.9 14.1 5.7c3 3.7 4.6 8.1 4.6 13.3zm-7.7-.2c0-4-1-7.2-3-9.5s-4.8-3.5-8.2-3.5c-3.6 0-6.4 1.2-8.3 3.7s-2.9 5.6-2.9 9.5c0 3.7.9 6.8 2.8 9.4 1.9 2.6 4.6 3.9 8.3 3.9 3.6 0 6.4-1.3 8.4-3.8 1.9-2.6 2.9-5.8 2.9-9.7zm45 5.8c-.4 3.2-1.9 6.3-4.4 9.1-2.5 2.9-6.4 4.3-11.8 4.3-5.2 0-9.4-1.6-12.6-4.8-3.2-3.2-4.8-7.7-4.8-13.7 0-5.5 1.6-10.1 4.7-13.9 3.2-3.8 7.6-5.7 13.2-5.7 2.3 0 4.6.3 6.7.8 2.2.5 4.2 1.5 6.2 2.9l1.5 9.5-5.9.7-1.3-6.1c-2.1-1.2-4.5-1.8-7.2-1.8-3.5 0-6.1 1.2-7.7 3.7-1.7 2.5-2.5 5.7-2.5 9.6 0 4.1.9 7.3 2.7 9.5 1.8 2.3 4.4 3.4 7.8 3.4 5.2 0 8.2-2.9 9.2-8.8l6.2 1.3zm34.7 1.9c0 3.6-1.5 6.5-4.6 8.5s-7 3-11.7 3c-5.7 0-10.6-1.2-14.6-3.6l1.2-8.8 5.7.6-.2 4.7c1.1.5 2.3.9 3.6 1.1s2.6.3 3.9.3c2.4 0 4.5-.4 6.5-1.3 1.9-.9 2.9-2.2 2.9-4.1 0-1.8-.8-3.1-2.3-3.8s-3.5-1.3-5.8-1.7-4.6-.9-6.9-1.4c-2.3-.6-4.2-1.6-5.7-2.9-1.6-1.4-2.3-3.5-2.3-6.3 0-4.1 1.5-6.9 4.6-8.5s6.4-2.4 9.9-2.4c2.6 0 5 .3 7.2.9 2.2.6 4.3 1.4 6.1 2.4l.8 8.8-5.8.7-.8-5.7c-2.3-1-4.7-1.6-7.2-1.6-2.1 0-3.7.4-5.1 1.1-1.3.8-2 2-2 3.8 0 1.7.8 2.9 2.3 3.6 1.5.7 3.4 1.2 5.7 1.6 2.2.4 4.5.8 6.7 1.4 2.2.6 4.1 1.6 5.7 3 1.4 1.6 2.2 3.7 2.2 6.6zM197.6 73.2h-17.1v-5.5h3.8V51.9c0-3.7-.7-6.3-2.1-7.9-1.4-1.6-3.3-2.3-5.7-2.3-3.2 0-5.6 1.1-7.2 3.4s-2.4 4.6-2.5 6.9v15.6h6v5.5h-17.1v-5.5h3.8V51.9c0-3.8-.7-6.4-2.1-7.9-1.4-1.5-3.3-2.3-5.6-2.3-3.2 0-5.5 1.1-7.2 3.3-1.6 2.2-2.4 4.5-2.5 6.9v15.8h6.9v5.5h-20.2v-5.5h6V42.4h-6.1v-5.6h13.4v6.4c1.2-2.1 2.7-3.8 4.7-5.2 2-1.3 4.4-2 7.3-2s5.3.7 7.5 2.1c2.2 1.4 3.7 3.5 4.5 6.4 1.1-2.5 2.7-4.5 4.9-6.1s4.8-2.4 7.9-2.4c3.5 0 6.5 1.1 8.9 3.3s3.7 5.6 3.7 10.2v18.2h6.1v5.5zm42.5 0h-13.2V66c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2s9.8 2.2 12.3 6.5V22.7h-8.6v-5.6h15.8v50.6h6v5.5zm-13.3-16.8V52c-.1-3-1.2-5.5-3.2-7.3s-4.4-2.8-7.2-2.8c-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zm61.5 16.8H269v-5.5h6V51.9c0-3.7-.7-6.3-2.2-7.9-1.4-1.6-3.4-2.3-5.7-2.3-3.1 0-5.6 1-7.4 3s-2.8 4.4-2.9 7v15.9h6v5.5h-19.3v-5.5h6V42.4h-6.2v-5.6h13.6V43c2.6-4.6 6.8-6.9 12.7-6.9 3.6 0 6.7 1.1 9.2 3.3s3.7 5.6 3.7 10.2v18.2h6v5.4h-.2z" class="logo-text"></path></svg></a><button title="Open main menu" type="button" class="button action has-icon main-menu-toggle" aria-haspopup="menu" aria-label="Open main menu" aria-expanded="false"><span class="button-wrap"><span class="icon icon-menu "></span><span class="visually-hidden">Open main menu</span></span></button></div><div class="top-navigation-main"><nav class="main-nav" aria-label="Main menu"><ul class="main-menu nojs"><li class="top-level-entry-container active"><button type="button" id="references-button" class="top-level-entry menu-toggle" aria-controls="references-menu" aria-expanded="false">References</button><a href="/ko/docs/Web" class="top-level-entry">References</a><ul id="references-menu" class="submenu references hidden inline-submenu-lg" aria-labelledby="references-button"><li class="apis-link-container mobile-only "><a href="/ko/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li><li class="html-link-container "><a href="/ko/docs/Web/HTML" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Structure of content on the web</p></div></a></li><li class="css-link-container "><a href="/ko/docs/Web/CSS" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Code used to describe document style</p></div></a></li><li class="javascript-link-container "><a href="/ko/docs/Web/JavaScript" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">General-purpose scripting language</p></div></a></li><li class="http-link-container "><a href="/ko/docs/Web/HTTP" class="submenu-item "><div class="submenu-icon http"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTTP</div><p class="submenu-item-description">Protocol for transmitting web resources</p></div></a></li><li class="apis-link-container "><a href="/ko/docs/Web/API" class="submenu-item "><div class="submenu-icon apis"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web APIs</div><p class="submenu-item-description">Interfaces for building web applications</p></div></a></li><li class="apis-link-container "><a href="/ko/docs/Mozilla/Add-ons/WebExtensions" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Extensions</div><p class="submenu-item-description">Developing extensions for web browsers</p></div></a></li><li class="apis-link-container desktop-only "><a href="/ko/docs/Web" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Web Technology</div><p class="submenu-item-description">Web technology reference for developers</p></div></a></li></ul></li><li class="top-level-entry-container "><button type="button" id="guides-button" class="top-level-entry menu-toggle" aria-controls="guides-menu" aria-expanded="false">Guides</button><a href="/ko/docs/Learn" class="top-level-entry">Guides</a><ul id="guides-menu" class="submenu guides hidden inline-submenu-lg" aria-labelledby="guides-button"><li class="apis-link-container mobile-only "><a href="/ko/docs/Learn" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview / MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="apis-link-container desktop-only "><a href="/ko/docs/Learn" class="submenu-item "><div class="submenu-icon learn"></div><div class="submenu-content-container"><div class="submenu-item-heading">MDN Learning Area</div><p class="submenu-item-description">Learn web development</p></div></a></li><li class="html-link-container "><a href="/ko/docs/Learn/HTML" class="submenu-item "><div class="submenu-icon html"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTML</div><p class="submenu-item-description">Learn to structure web content with HTML</p></div></a></li><li class="css-link-container "><a href="/ko/docs/Learn/CSS" class="submenu-item "><div class="submenu-icon css"></div><div class="submenu-content-container"><div class="submenu-item-heading">CSS</div><p class="submenu-item-description">Learn to style content using CSS</p></div></a></li><li class="javascript-link-container "><a href="/ko/docs/Learn/JavaScript" class="submenu-item "><div class="submenu-icon javascript"></div><div class="submenu-content-container"><div class="submenu-item-heading">JavaScript</div><p class="submenu-item-description">Learn to run scripts in the browser</p></div></a></li><li class=" "><a href="/ko/docs/Web/Accessibility" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Accessibility</div><p class="submenu-item-description">Learn to make the web accessible to all</p></div></a></li></ul></li><li class="top-level-entry-container "><button type="button" id="mdn-plus-button" class="top-level-entry menu-toggle" aria-controls="mdn-plus-menu" aria-expanded="false">Plus</button><a href="/ko/plus" class="top-level-entry">Plus</a><ul id="mdn-plus-menu" class="submenu mdn-plus hidden inline-submenu-lg" aria-labelledby="mdn-plus-button"><li class=" "><a href="/ko/plus" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Overview</div><p class="submenu-item-description">A customized MDN experience</p></div></a></li><li class=" "><a href="/ko/plus/ai-help" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">AI Help</div><p class="submenu-item-description">Get real-time assistance and support</p></div></a></li><li class=" "><a href="/ko/plus/updates" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Updates</div><p class="submenu-item-description">All browser compatibility updates at a glance</p></div></a></li><li class=" "><a href="/en-US/plus/docs/features/overview" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Documentation</div><p class="submenu-item-description">Learn how to use MDN Plus</p></div></a></li><li class=" "><a href="/en-US/plus/docs/faq" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">FAQ</div><p class="submenu-item-description">Frequently asked questions about MDN Plus</p></div></a></li></ul></li><li class="top-level-entry-container "><a class="top-level-entry menu-link" href="/en-US/curriculum/">Curriculum <sup class="new">New</sup></a></li><li class="top-level-entry-container "><a class="top-level-entry menu-link" href="/en-US/blog/">Blog</a></li><li class="top-level-entry-container "><button type="button" id="tools-button" class="top-level-entry menu-toggle" aria-controls="tools-menu" aria-expanded="false">Tools</button><ul id="tools-menu" class="submenu tools hidden inline-submenu-lg" aria-labelledby="tools-button"><li class=" "><a href="/ko/play" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">Playground</div><p class="submenu-item-description">Write, test and share your code</p></div></a></li><li class=" "><a href="/en-US/observatory" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">HTTP Observatory</div><p class="submenu-item-description">Scan a website for free</p></div></a></li><li class=" "><a href="/en-US/plus/ai-help" class="submenu-item "><div class="submenu-icon"></div><div class="submenu-content-container"><div class="submenu-item-heading">AI Help</div><p class="submenu-item-description">Get real-time assistance and support</p></div></a></li></ul></li></ul></nav><div class="header-search"><form action="/ko/search" class="search-form search-widget" id="top-nav-search-form" role="search"><label id="top-nav-search-label" for="top-nav-search-input" class="visually-hidden">Search MDN</label><input aria-activedescendant="" aria-autocomplete="list" aria-controls="top-nav-search-menu" aria-expanded="false" aria-labelledby="top-nav-search-label" autoComplete="off" id="top-nav-search-input" role="combobox" type="search" class="search-input-field" name="q" placeholder=" " required="" value=""/><button type="button" class="button action has-icon clear-search-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear search input</span></span></button><button type="submit" class="button action has-icon search-button"><span class="button-wrap"><span class="icon icon-search "></span><span class="visually-hidden">Search</span></span></button><div id="top-nav-search-menu" role="listbox" aria-labelledby="top-nav-search-label"></div></form></div><div class="theme-switcher-menu"><button type="button" class="button action has-icon theme-switcher-menu small" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-theme-os-default "></span>Theme</span></button></div><ul class="auth-container"><li><a href="/users/fxa/login/authenticate/?next=%2Fko%2Fdocs%2FWeb%2FHTTP%2FCORS" class="login-link" rel="nofollow">Log in</a></li><li><a href="/users/fxa/login/authenticate/?next=%2Fko%2Fdocs%2FWeb%2FHTTP%2FCORS" target="_self" rel="nofollow" class="button primary mdn-plus-subscribe-link"><span class="button-wrap">Sign up for free</span></a></li></ul></div></div></header><div class="article-actions-container"><div class="container"><button type="button" class="button action has-icon sidebar-button" aria-label="Expand sidebar" aria-expanded="false" aria-controls="sidebar-quicklinks"><span class="button-wrap"><span class="icon icon-sidebar "></span></span></button><nav class="breadcrumbs-container" aria-label="Breadcrumb"><ol typeof="BreadcrumbList" vocab="https://schema.org/" aria-label="breadcrumbs"><li property="itemListElement" typeof="ListItem"><a href="/ko/docs/Web" class="breadcrumb" property="item" typeof="WebPage"><span property="name">개발자를 위한 웹 기술</span></a><meta property="position" content="1"/></li><li property="itemListElement" typeof="ListItem"><a href="/ko/docs/Web/HTTP" class="breadcrumb" property="item" typeof="WebPage"><span property="name">HTTP</span></a><meta property="position" content="2"/></li><li property="itemListElement" typeof="ListItem"><a href="/ko/docs/Web/HTTP/CORS" class="breadcrumb-current-page" property="item" typeof="WebPage"><span property="name">교차 출처 리소스 공유 (CORS)</span></a><meta property="position" content="3"/></li></ol></nav><div class="article-actions"><button type="button" class="button action has-icon article-actions-toggle" aria-label="Article actions"><span class="button-wrap"><span class="icon icon-ellipses "></span><span class="article-actions-dialog-heading">Article Actions</span></span></button><ul class="article-actions-entries"><li class="article-actions-entry"><div class="languages-switcher-menu open-on-focus-within"><button id="languages-switcher-button" type="button" class="button action small has-icon languages-switcher-menu" aria-haspopup="menu"><span class="button-wrap"><span class="icon icon-language "></span>한국어</span></button><div class="hidden"><ul class="submenu language-menu " aria-labelledby="language-menu-button"><li class=" "><form class="submenu-item locale-redirect-setting"><div class="group"><label class="switch"><input type="checkbox" name="locale-redirect"/><span class="slider"></span><span class="label">Remember language</span></label><a href="https://github.com/orgs/mdn/discussions/739" rel="external noopener noreferrer" target="_blank" title="Enable this setting to automatically switch to this language when it's available. (Click to learn more.)"><span class="icon icon-question-mark "></span></a></div></form></li><li class=" "><a data-locale="de" href="/de/docs/Web/HTTP/CORS" class="button submenu-item"><span>Deutsch</span><span title="Diese Übersetzung ist Teil eines Experiments."><span class="icon icon-experimental "></span></span></a></li><li class=" "><a data-locale="en-US" href="/en-US/docs/Web/HTTP/CORS" class="button submenu-item"><span>English (US)</span></a></li><li class=" "><a data-locale="es" href="/es/docs/Web/HTTP/CORS" class="button submenu-item"><span>Español</span></a></li><li class=" "><a data-locale="fr" href="/fr/docs/Web/HTTP/CORS" class="button submenu-item"><span>Français</span></a></li><li class=" "><a data-locale="ja" href="/ja/docs/Web/HTTP/CORS" class="button submenu-item"><span>日本語</span></a></li><li class=" "><a data-locale="pt-BR" href="/pt-BR/docs/Web/HTTP/CORS" class="button submenu-item"><span>Português (do Brasil)</span></a></li><li class=" "><a data-locale="ru" href="/ru/docs/Web/HTTP/CORS" class="button submenu-item"><span>Русский</span></a></li><li class=" "><a data-locale="zh-CN" href="/zh-CN/docs/Web/HTTP/CORS" class="button submenu-item"><span>中文 (简体)</span></a></li><li class=" "><a data-locale="zh-TW" href="/zh-TW/docs/Web/HTTP/CORS" class="button submenu-item"><span>正體中文 (繁體)</span></a></li></ul></div></div></li></ul></div></div></div></div><div class="container"><div class="notecard localized-content-note"><p><a href="/en-US/docs/MDN/Community/Contributing/Translated_content#active_locales">이 페이지는 영어로부터 커뮤니티에 의하여 번역되었습니다. MDN Web Docs에서 한국 커뮤니티에 가입하여 자세히 알아보세요.</a></p></div></div><div class="main-wrapper"><div class="sidebar-container"><aside id="sidebar-quicklinks" class="sidebar" data-macro="HTTPSidebar"><button type="button" class="button action backdrop" aria-label="Collapse sidebar"><span class="button-wrap"></span></button><nav aria-label="Related Topics" class="sidebar-inner"><header class="sidebar-actions"><section class="sidebar-filter-container"><div class="sidebar-filter "><label id="sidebar-filter-label" class="sidebar-filter-label" for="sidebar-filter-input"><span class="icon icon-filter"></span><span class="visually-hidden">Filter sidebar</span></label><input id="sidebar-filter-input" autoComplete="off" class="sidebar-filter-input-field false" type="text" placeholder="Filter" value=""/><button type="button" class="button action has-icon clear-sidebar-filter-button"><span class="button-wrap"><span class="icon icon-cancel "></span><span class="visually-hidden">Clear filter input</span></span></button></div></section></header><div class="sidebar-inner-nav"><div class="in-nav-toc"><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">목차</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#어떤_요청이_cors를_사용합니까">어떤 요청이 CORS를 사용합니까?</a></li><li class="document-toc-item "><a class="document-toc-link" href="#기능적_개요">기능적 개요</a></li><li class="document-toc-item "><a class="document-toc-link" href="#접근_제어_시나리오_예제">접근 제어 시나리오 예제</a></li><li class="document-toc-item "><a class="document-toc-link" href="#http_응답_헤더">HTTP 응답 헤더</a></li><li class="document-toc-item "><a class="document-toc-link" href="#http_요청_헤더">HTTP 요청 헤더</a></li><li class="document-toc-item "><a class="document-toc-link" href="#명세서">명세서</a></li><li class="document-toc-item "><a class="document-toc-link" href="#브라우저_호환성">브라우저 호환성</a></li><li class="document-toc-item "><a class="document-toc-link" href="#같이_보기">같이 보기</a></li></ul></section></div></div><div class="sidebar-body"> <ol> <li class="section"><a href="/ko/docs/Web/HTTP">HTTP</a></li> <li class="section no-link">가이드</li> <li><a href="/ko/docs/Web/HTTP/Overview">HTTP 개요</a></li> <li><a href="/ko/docs/Web/HTTP/Session">전형적인 HTTP 세션</a></li> <li><a href="/ko/docs/Web/HTTP/Messages">HTTP 메시지</a></li> <li><a href="/ko/docs/Web/HTTP/MIME_types">MIME 타입 (IANA 미디어 타입)</a></li> <li><a href="/ko/docs/Web/HTTP/Compression">HTTP에서의 압축</a></li> <li><a href="/ko/docs/Web/HTTP/Caching">HTTP 캐싱</a></li> <li><a href="/ko/docs/Web/HTTP/Authentication">HTTP 인증</a></li> <li><a href="/ko/docs/Web/HTTP/Cookies">HTTP 쿠키</a></li> <li><a href="/ko/docs/Web/HTTP/Redirections">HTTP 리다이렉트</a></li> <li><a href="/ko/docs/Web/HTTP/Conditional_requests">HTTP 조건부 요청</a></li> <li><a href="/ko/docs/Web/HTTP/Range_requests">HTTP 범위 요청</a></li> <li><a href="/ko/docs/Web/HTTP/Content_negotiation">콘텐츠 협상</a></li> <li><a href="/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x">HTTP/1.x의 커넥션 관리</a></li> <li><a href="/ko/docs/Web/HTTP/Evolution_of_HTTP">HTTP의 진화</a></li> <li><a href="/ko/docs/Web/HTTP/Protocol_upgrade_mechanism">프로토콜 업그레이드 메커니즘</a></li> <li><a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling">Proxy servers and tunneling</a></li> <li><a href="/ko/docs/Web/HTTP/Client_hints">Client hints(클라이언트 힌트)</a></li> <li class="toggle"> <details open=""> <summary>HTTP 보안</summary> <ol> <li><a href="/ko/docs/Web/Security/Practical_implementation_guides">사이트 보안</a></li> <li><a href="/en-US/observatory">HTTP Observatory</a></li> <li><a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/HTTP/Permissions_Policy">Permissions Policy</a></li> <li><a href="/ko/docs/Web/HTTP/CSP">컨텐츠 보안 정책 (CSP)</a></li> <li><em><a href="/ko/docs/Web/HTTP/CORS" aria-current="page">교차 출처 리소스 공유 (CORS)</a></em></li> <li><a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy">Cross-Origin Resource Policy (CORP)</a></li> <li><a href="/ko/docs/Web/HTTP/Headers/Strict-Transport-Security">Strict-Transport-Security</a></li> </ol> </details> </li> <li class="section no-link">레퍼런스</li> <li class="toggle"> <details> <summary>HTTP 헤더</summary> <ol><li><a href="/ko/docs/Web/HTTP/Headers/Accept"><code>Accept</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Accept-CH"><code>Accept-CH</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Accept-Encoding"><code>Accept-Encoding</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Accept-Language"><code>Accept-Language</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Accept-Patch"><code>Accept-Patch</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Accept-Post"><code>Accept-Post</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Accept-Ranges"><code>Accept-Ranges</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials"><code>Access-Control-Allow-Credentials</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Headers"><code>Access-Control-Allow-Headers</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Methods"><code>Access-Control-Allow-Methods</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Expose-Headers"><code>Access-Control-Expose-Headers</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age"><code>Access-Control-Max-Age</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers"><code>Access-Control-Request-Headers</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Request-Method"><code>Access-Control-Request-Method</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Age"><code>Age</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Allow"><code>Allow</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Alt-Svc"><code>Alt-Svc</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Alt-Used"><code>Alt-Used</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Attribution-Reporting-Eligible"><code>Attribution-Reporting-Eligible</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Attribution-Reporting-Register-Source"><code>Attribution-Reporting-Register-Source</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Attribution-Reporting-Register-Trigger"><code>Attribution-Reporting-Register-Trigger</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Authorization"><code>Authorization</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Cache-Control"><code>Cache-Control</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Clear-Site-Data"><code>Clear-Site-Data</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Connection"><code>Connection</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Digest"><code>Content-Digest</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Disposition"><code>Content-Disposition</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-DPR"><code>Content-DPR</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Encoding"><code>Content-Encoding</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Language"><code>Content-Language</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Length"><code>Content-Length</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Location"><code>Content-Location</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Range"><code>Content-Range</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy"><code>Content-Security-Policy</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only"><code>Content-Security-Policy-Report-Only</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Type"><code>Content-Type</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Cookie"><code>Cookie</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Critical-CH"><code>Critical-CH</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy"><code>Cross-Origin-Embedder-Policy</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy"><code>Cross-Origin-Opener-Policy</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy"><code>Cross-Origin-Resource-Policy</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Date"><code>Date</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Device-Memory"><code>Device-Memory</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/DNT"><code>DNT</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Downlink"><code>Downlink</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/DPR"><code>DPR</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Early-Data"><code>Early-Data</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/ECT"><code>ECT</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/ETag"><code>ETag</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Expect"><code>Expect</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Expect-CT"><code>Expect-CT</code></a><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Expires"><code>Expires</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Forwarded"><code>Forwarded</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/From"><code>From</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Host"><code>Host</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/If-Match"><code>If-Match</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/If-Modified-Since"><code>If-Modified-Since</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/If-None-Match"><code>If-None-Match</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/If-Range"><code>If-Range</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/If-Unmodified-Since"><code>If-Unmodified-Since</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Keep-Alive"><code>Keep-Alive</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Last-Modified"><code>Last-Modified</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Link"><code>Link</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Location"><code>Location</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Max-Forwards"><code>Max-Forwards</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/NEL"><code>NEL</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/No-Vary-Search"><code>No-Vary-Search</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Observe-Browsing-Topics"><code>Observe-Browsing-Topics</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Origin-Agent-Cluster"><code>Origin-Agent-Cluster</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy"><code>Permissions-Policy</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Pragma"><code>Pragma</code></a><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Priority"><code>Priority</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Proxy-Authenticate"><code>Proxy-Authenticate</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Proxy-Authorization"><code>Proxy-Authorization</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Range"><code>Range</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Referer"><code>Referer</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Referrer-Policy"><code>Referrer-Policy</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Refresh"><code>Refresh</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Report-To"><code>Report-To</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Reporting-Endpoints"><code>Reporting-Endpoints</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Repr-Digest"><code>Repr-Digest</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Retry-After"><code>Retry-After</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/RTT"><code>RTT</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Save-Data"><code>Save-Data</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-Browsing-Topics"><code>Sec-Browsing-Topics</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-Prefers-Color-Scheme"><code>Sec-CH-Prefers-Color-Scheme</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-Prefers-Reduced-Motion"><code>Sec-CH-Prefers-Reduced-Motion</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-Prefers-Reduced-Transparency"><code>Sec-CH-Prefers-Reduced-Transparency</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA"><code>Sec-CH-UA</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Arch"><code>Sec-CH-UA-Arch</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Bitness"><code>Sec-CH-UA-Bitness</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Full-Version"><code>Sec-CH-UA-Full-Version</code></a><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Full-Version-List"><code>Sec-CH-UA-Full-Version-List</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Mobile"><code>Sec-CH-UA-Mobile</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Model"><code>Sec-CH-UA-Model</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Platform"><code>Sec-CH-UA-Platform</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Platform-Version"><code>Sec-CH-UA-Platform-Version</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-Fetch-Dest"><code>Sec-Fetch-Dest</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-Fetch-Mode"><code>Sec-Fetch-Mode</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-Fetch-Site"><code>Sec-Fetch-Site</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-Fetch-User"><code>Sec-Fetch-User</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-GPC"><code>Sec-GPC</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-Purpose"><code>Sec-Purpose</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Accept"><code>Sec-WebSocket-Accept</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Extensions"><code>Sec-WebSocket-Extensions</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Key"><code>Sec-WebSocket-Key</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Protocol"><code>Sec-WebSocket-Protocol</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Version"><code>Sec-WebSocket-Version</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Server"><code>Server</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Server-Timing"><code>Server-Timing</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Service-Worker-Navigation-Preload"><code>Service-Worker-Navigation-Preload</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Set-Cookie"><code>Set-Cookie</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Set-Login"><code>Set-Login</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/SourceMap"><code>SourceMap</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Speculation-Rules"><code>Speculation-Rules</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Strict-Transport-Security"><code>Strict-Transport-Security</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Supports-Loading-Mode"><code>Supports-Loading-Mode</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/TE"><code>TE</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Timing-Allow-Origin"><code>Timing-Allow-Origin</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Tk"><code>Tk</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Trailer"><code>Trailer</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Transfer-Encoding"><code>Transfer-Encoding</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Upgrade"><code>Upgrade</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Upgrade-Insecure-Requests"><code>Upgrade-Insecure-Requests</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/User-Agent"><code>User-Agent</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Vary"><code>Vary</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Via"><code>Via</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Viewport-Width"><code>Viewport-Width</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Want-Content-Digest"><code>Want-Content-Digest</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Want-Repr-Digest"><code>Want-Repr-Digest</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Warning"><code>Warning</code></a><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Width"><code>Width</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/WWW-Authenticate"><code>WWW-Authenticate</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/X-Content-Type-Options"><code>X-Content-Type-Options</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control"><code>X-DNS-Prefetch-Control</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/X-Forwarded-For"><code>X-Forwarded-For</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/X-Forwarded-Host"><code>X-Forwarded-Host</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/X-Forwarded-Proto"><code>X-Forwarded-Proto</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/X-Frame-Options"><code>X-Frame-Options</code></a><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/X-XSS-Protection"><code>X-XSS-Protection</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li></ol> </details> </li> <li class="toggle"> <details> <summary>HTTP 요청 메소드</summary> <ol><li><a href="/ko/docs/Web/HTTP/Methods/CONNECT"><code>CONNECT</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/DELETE"><code>DELETE</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/GET"><code>GET</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/HEAD"><code>HEAD</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/OPTIONS"><code>OPTIONS</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/PATCH"><code>PATCH</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/POST"><code>POST</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/PUT"><code>PUT</code></a></li><li><a href="/ko/docs/Web/HTTP/Methods/TRACE"><code>TRACE</code></a></li></ol> </details> </li> <li class="toggle"> <details> <summary>HTTP 응답 상태 코드</summary> <ol><li><a href="/ko/docs/Web/HTTP/Status/100"><code>100 Continue</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/101"><code>101 Switching Protocols</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/102"><code>102 Processing</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/103"><code>103 Early Hints</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/200"><code>200 OK</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/201"><code>201 Created</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/202"><code>202 Accepted</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/203"><code>203 Non-Authoritative Information</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/204"><code>204 No Content</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/205"><code>205 Reset Content</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/206"><code>206 Partial Content</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/207"><code>207 Multi-Status</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/208"><code>208 Already Reported</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/226"><code>226 IM Used</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/300"><code>300 Multiple Choices</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/301"><code>301 Moved Permanently</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/302"><code>302 Found</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/303"><code>303 See Other</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/304"><code>304 Not Modified</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/307"><code>307 Temporary Redirect</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/308"><code>308 Permanent Redirect</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/400"><code>400 Bad Request</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/401"><code>401 Unauthorized</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/402"><code>402 Payment Required</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/403"><code>403 Forbidden</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/404"><code>404 Not Found</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/405"><code>405 Method Not Allowed</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/406"><code>406 Not Acceptable</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/407"><code>407 Proxy Authentication Required</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/408"><code>408 Request Timeout</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/409"><code>409 Conflict</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/410"><code>410 Gone</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/411"><code>411 Length Required</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/412"><code>412 Precondition Failed</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/413"><code>413 Content Too Large</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/414"><code>414 URI Too Long</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/415"><code>415 Unsupported Media Type</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/416"><code>416 Range Not Satisfiable</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/417"><code>417 Expectation Failed</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/418"><code>418 I'm a teapot</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/421"><code>421 Misdirected Request</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/422"><code>422 Unprocessable Content</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/423"><code>423 Locked</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/424"><code>424 Failed Dependency</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/425"><code>425 Too Early</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/426"><code>426 Upgrade Required</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/428"><code>428 Precondition Required</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/429"><code>429 Too Many Requests</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/431"><code>431 Request Header Fields Too Large</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/451"><code>451 Unavailable For Legal Reasons</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/500"><code>500 Internal Server Error</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/501"><code>501 Not Implemented</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/502"><code>502 Bad Gateway</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/503"><code>503 Service Unavailable</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/504"><code>504 Gateway Timeout</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/505"><code>505 HTTP Version Not Supported</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/506"><code>506 Variant Also Negotiates</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/507"><code>507 Insufficient Storage</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/508"><code>508 Loop Detected</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/510"><code>510 Not Extended</code></a></li><li><a href="/ko/docs/Web/HTTP/Status/511"><code>511 Network Authentication Required</code></a></li></ol> </details> </li> <li class="toggle"> <details> <summary>CSP 지시문</summary> <ol><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/base-uri"><code>CSP: base-uri</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/block-all-mixed-content"><code>CSP: block-all-mixed-content</code></a><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/child-src"><code>CSP: child-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src"><code>CSP: connect-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/default-src"><code>CSP: default-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/fenced-frame-src"><code>CSP: fenced-frame-src</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/font-src"><code>CSP: font-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/form-action"><code>CSP: form-action</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors"><code>CSP: frame-ancestors</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/frame-src"><code>CSP: frame-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/img-src"><code>CSP: img-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/manifest-src"><code>CSP: manifest-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/media-src"><code>CSP: media-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/object-src"><code>CSP: object-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/prefetch-src"><code>CSP: prefetch-src</code></a><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/report-to"><code>report-to</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/report-uri"><code>CSP: report-uri</code></a><abbr class="icon icon-deprecated" title="지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요."> <span class="visually-hidden">지원이 중단되었습니다</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for"><code>CSP: require-trusted-types-for</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/sandbox"><code>CSP: sandbox</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/script-src"><code>CSP: script-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/script-src-attr"><code>CSP: script-src-attr</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/script-src-elem"><code>CSP: script-src-elem</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/style-src"><code>CSP: style-src</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/style-src-attr"><code>CSP: style-src-attr</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/style-src-elem"><code>CSP: style-src-elem</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types"><code>CSP: trusted-types</code></a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests"><code>CSP: upgrade-insecure-requests</code></a></li><li><a href="/ko/docs/Web/HTTP/Headers/Content-Security-Policy/worker-src"><code>CSP: worker-src</code></a></li></ol> </details> </li> <li class="toggle"> <details> <summary>CORS 에러</summary> <ol><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSDisabled">Reason: CORS disabled</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin">Reason: CORS header 'Access-Control-Allow-Origin' does not match 'xyz'</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin">Reason: CORS header 'Access-Control-Allow-Origin' missing</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded">Reason: CORS header 'Origin' cannot be added</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed">Reason: CORS preflight channel did not succeed</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSDidNotSucceed">Reason: CORS request did not succeed</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed">Reason: CORS request external redirect not allowed</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp">Reason: CORS request not HTTP</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials">Reason: Credential is not supported if the CORS header 'Access-Control-Allow-Origin' is '*'</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSMethodNotFound">Reason: Did not find method in CORS header 'Access-Control-Allow-Methods'</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSMIssingAllowCredentials">Reason: expected 'true' in CORS header 'Access-Control-Allow-Credentials'</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowHeader">Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Headers'</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowMethod">Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Methods'</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSMissingAllowHeaderFromPreflight">Reason: missing token 'xyz' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channel</a></li><li><a href="/ko/docs/Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed">Reason: Multiple CORS header 'Access-Control-Allow-Origin' not allowed</a></li></ol> </details> </li> <li class="toggle"> <details> <summary>Permissions-Policy 지시문</summary> <ol><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/accelerometer">Permissions-Policy: accelerometer</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/ambient-light-sensor">Permissions-Policy: ambient-light-sensor</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/attribution-reporting">Permissions-Policy: attribution-reporting</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/autoplay">Permissions-Policy: autoplay</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/bluetooth">Permissions-Policy: bluetooth</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/browsing-topics">Permissions-Policy: browsing-topics</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr><abbr class="icon icon-nonstandard" title="비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요."> <span class="visually-hidden">비표준</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/camera">Permissions-Policy: camera</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/compute-pressure">Permissions-Policy: compute-pressure</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/display-capture">Permissions-Policy: display-capture</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/document-domain">Permissions-Policy: document-domain</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/encrypted-media">Permissions-Policy: encrypted-media</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/fullscreen">Permissions-Policy: fullscreen</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/gamepad">Permissions-Policy: gamepad</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/geolocation">Permissions-Policy: geolocation</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/gyroscope">Permissions-Policy: gyroscope</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/hid">Permissions-Policy: hid</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/identity-credentials-get">Permissions-Policy: identity-credentials-get</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/idle-detection">Permissions-Policy: idle-detection</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/local-fonts">Permissions-Policy: local-fonts</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/magnetometer">Permissions-Policy: magnetometer</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/microphone">Permissions-Policy: microphone</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/midi">Permissions-Policy: midi</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/otp-credentials">Permissions-Policy: otp-credentials</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/payment">Permissions-Policy: payment</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/picture-in-picture">Permissions-Policy: picture-in-picture</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/publickey-credentials-create">Permissions-Policy: publickey-credentials-create</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/publickey-credentials-get">Permissions-Policy: publickey-credentials-get</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/screen-wake-lock">Permissions-Policy: screen-wake-lock</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/serial">Permissions-Policy: serial</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/speaker-selection">Permissions-Policy: speaker-selection</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/storage-access">Permissions-Policy: storage-access</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/usb">Permissions-Policy: usb</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/web-share">Permissions-Policy: web-share</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/window-management">Permissions-Policy: window-management</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li><li><a href="/ko/docs/Web/HTTP/Headers/Permissions-Policy/xr-spatial-tracking">Permissions-Policy: xr-spatial-tracking</a><abbr class="icon icon-experimental" title="Experimental. 예상되는 동작은 향후 변경될 수 있습니다."> <span class="visually-hidden">Experimental</span> </abbr></li></ol> </details> </li> <li><a href="/ko/docs/Web/HTTP/Resources_and_specifications">HTTP 리소스와 명세</a></li> </ol> </div></div><section class="place side"></section></nav></aside><div class="toc-container"><aside class="toc"><nav><div class="document-toc-container"><section class="document-toc"><header><h2 class="document-toc-heading">목차</h2></header><ul class="document-toc-list"><li class="document-toc-item "><a class="document-toc-link" href="#어떤_요청이_cors를_사용합니까">어떤 요청이 CORS를 사용합니까?</a></li><li class="document-toc-item "><a class="document-toc-link" href="#기능적_개요">기능적 개요</a></li><li class="document-toc-item "><a class="document-toc-link" href="#접근_제어_시나리오_예제">접근 제어 시나리오 예제</a></li><li class="document-toc-item "><a class="document-toc-link" href="#http_응답_헤더">HTTP 응답 헤더</a></li><li class="document-toc-item "><a class="document-toc-link" href="#http_요청_헤더">HTTP 요청 헤더</a></li><li class="document-toc-item "><a class="document-toc-link" href="#명세서">명세서</a></li><li class="document-toc-item "><a class="document-toc-link" href="#브라우저_호환성">브라우저 호환성</a></li><li class="document-toc-item "><a class="document-toc-link" href="#같이_보기">같이 보기</a></li></ul></section></div></nav></aside><section class="place side"></section></div></div><main id="content" class="main-content "><article class="main-page-content" lang="ko"><header><h1>교차 출처 리소스 공유 (CORS)</h1><details class="baseline-indicator high"><summary><span class="indicator" role="img" aria-label="Baseline Check"></span><h2>Baseline<!-- --> <span class="not-bold">Widely available</span></h2><div class="browsers"><span class="engine" title="Supported in Chrome and Edge"><span class="browser chrome supported" role="img" aria-label="Chrome check"></span><span class="browser edge supported" role="img" aria-label="Edge check"></span></span><span class="engine" title="Supported in Firefox"><span class="browser firefox supported" role="img" aria-label="Firefox check"></span></span><span class="engine" title="Supported in Safari"><span class="browser safari supported" role="img" aria-label="Safari check"></span></span></div><span class="icon icon-chevron "></span></summary><div class="extra"><p>This feature is well established and works across many devices and browser versions. It’s been available across browsers since<!-- --> <!-- -->July 2015<!-- -->.</p><ul><li><a href="/ko/docs/Glossary/Baseline/Compatibility" data-glean="baseline_link_learn_more" target="_blank" class="learn-more">Learn more</a></li><li><a href="#브라우저_호환성" data-glean="baseline_link_bcd_table">See full compatibility</a></li><li><a href="https://survey.alchemer.com/s3/7634825/MDN-baseline-feedback?page=%2Fko%2Fdocs%2FWeb%2FHTTP%2FCORS&level=high" data-glean="baseline_link_feedback" class="feedback-link" target="_blank" rel="noreferrer">Report feedback</a></li></ul></div></details></header><div class="section-content"><p><strong>교차 출처 리소스 공유</strong>(Cross-Origin Resource Sharing, <a href="/ko/docs/Glossary/CORS">CORS</a>)는 브라우저가 자신의 출처가 아닌 다른 어떤 <a href="/ko/docs/Glossary/Origin">출처</a>(도메인, 스킴 혹은 포트)로부터 자원을 로딩하는 것을 허용하도록 서버가 허가 해주는 <a href="/ko/docs/Glossary/HTTP">HTTP</a> 헤더 기반 메커니즘입니다. 또한 CORS 는 교차 출처 리소스를 호스팅하는 서버가 실제 요청을 허가할 것인지 확인하기 위해 브라우저가 보내는 "사전 요청(프리플라이트, Preflight)" 메커니즘에 의존합니다. 이 사전 요청에서 브라우저는 실제 요청에서 사용할 HTTP 메서드와 헤더들에 대한 정보가 표시된 헤더에 담아 보냅니다.</p> <p>교차 출처 요청의 예시: <code>https://domain-a.com</code> 에서 제공되는 프론트엔드 JavaScript 코드가 <a href="/ko/docs/Web/API/Window/fetch" title="fetch()"><code>fetch()</code></a>를 사용하여 <code>https://domain-b.com/data.json</code> 에 요청하는 경우.</p> <p>보안 상의 이유로 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한합니다. 예를 들어, <code>fetch()</code> 와 <a href="/ko/docs/Web/API/XMLHttpRequest"><code>XMLHttpRequest</code></a> 는 <a href="/ko/docs/Web/Security/Same-origin_policy">동일 출처 정책</a>을 따릅니다. 이는 이러한 API를 사용하는 웹 애플리케이션이 애플리케이션이 로드된 동일한 출처에서만 리소스를 요청할 수 있으며, 다른 출처의 응답에 올바른 CORS 헤더가 포함되어 있지 않는 한 그렇지 못하다는 것을 의미합니다.</p> <p> <img src="https://mdn.github.io/shared-assets/images/diagrams/http/cors/fetching-page-cors.svg" alt="Diagrammatic representation of CORS mechanism" loading="lazy"> </p> <p>CORS 메커니즘은 브라우저와 서버 간의 안전한 교차 출처 요청 및 데이터 전송을 지원합니다. 브라우저는 교차 출처 HTTP 요청의 위험을 완화하기 위해 <code>fetch()</code> 나 <code>XMLHttpRequest</code> 같은 API에서 CORS를 사용합니다.</p></div><section aria-labelledby="어떤_요청이_cors를_사용합니까"><h2 id="어떤_요청이_cors를_사용합니까"><a href="#어떤_요청이_cors를_사용합니까">어떤 요청이 CORS를 사용합니까?</a></h2><div class="section-content"><p>이 <a href="https://fetch.spec.whatwg.org/#http-cors-protocol" class="external" target="_blank">교차 출처 공유 표준</a>은 다음과 같은 경우에 교차 출처 HTTP 요청을 가능하게 합니다.</p> <ul> <li>위에서 언급한 <code>fetch()</code> 또는 <code>XMLHttpRequest</code>의 호출.</li> <li>웹 폰트(CSS 내 <code>@font-face</code>에서 교차 도메인 폰트 사용 시), <a href="https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements" class="external" target="_blank">서버가 교차 출처로만 로드될 수 있고 허가된 웹사이트에서만 사용할 수 있는 TrueType 폰트를 배포할 수 있게 합니다.</a></li> <li><a href="/ko/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL">WebGL 텍스쳐</a>.</li> <li><a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage"><code>drawImage()</code></a>를 사용해 캔버스에 그린 이미지/비디오 프레임.</li> <li><a href="/en-US/docs/Web/CSS/CSS_shapes/Shapes_from_images" class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다">이미지로부터 추출하는 CSS Shapes.</a></li> </ul> <p>교차 출처 리소스 공유에 대한 일반적인 글이며 필요한 HTTP 헤더에 대한 논의도 포함하고 있습니다.</p></div></section><section aria-labelledby="기능적_개요"><h2 id="기능적_개요"><a href="#기능적_개요">기능적 개요</a></h2><div class="section-content"><p>교차 출처 리소스 공유 표준은 서버가 웹 브라우저에서 해당 정보를 읽는 것이 허용된 출처를 설명할 수 있도록 새로운 <a href="/ko/docs/Web/HTTP/Headers">HTTP 헤더</a>를 추가함으로써 동작합니다. 추가적으로, 서버 데이터에 부수 효과(side effect)를 일으킬 수 있는 HTTP 요청 방법(특히 <a href="/ko/docs/Web/HTTP/Methods/GET"><code>GET</code></a> 이외의 HTTP 메서드 또는 특정 <a href="/ko/docs/Web/HTTP/MIME_types">MIME 타입</a>을 사용하는 <a href="/ko/docs/Web/HTTP/Methods/POST"><code>POST</code></a>)에 대해서, CORS 명세는 브라우저가 HTTP <a href="/ko/docs/Web/HTTP/Methods/OPTIONS"><code>OPTIONS</code></a> 메서드로 서버에서 지원하는 메서드들을 요구하는 요청을 "사전 전달(프리플라이트)"한 다음, 서버로부터 "승인"을 받은 후 실제 요청을 보내도록 지시합니다. 또한 서버는 요청과 함께 "자격 증명"(예를 들어 <a href="/ko/docs/Web/HTTP/Cookies">쿠키</a> 및 <a href="/ko/docs/Web/HTTP/Authentication">HTTP 인증</a>)을 전송해야 하는지 여부를 클라이언트에게 알릴 수 있습니다.</p> <p>CORS 실패는 오류를 발생시키지만, 보안상의 이유로 오류에 대한 세부 사항은 JavaScript에 제공되지 않습니다. 코드가 알 수 있는 것은 오류가 발생했다는 것뿐입니다. 무엇이 구체적으로 잘못되었는지를 확인하려면 브라우저의 콘솔에서 세부 사항을 살펴봐야 합니다.</p> <p>다음 섹션에서는 다양한 시나리오를 논의하고, 사용되는 HTTP 헤더에 대한 세부 사항을 제공합니다.</p></div></section><section aria-labelledby="접근_제어_시나리오_예제"><h2 id="접근_제어_시나리오_예제"><a href="#접근_제어_시나리오_예제">접근 제어 시나리오 예제</a></h2><div class="section-content"><p>교차 출처 리소스 공유가 동작하는 방식을 보여주는 세 가지 시나리오를 제시하겠습니다. 모든 예제는 지원하는 브라우저에서 교차 출처 요청을 생성할 수 있는 <a href="/ko/docs/Web/API/Window/fetch" title="fetch()"><code>fetch()</code></a>를 사용합니다.</p></div></section><section aria-labelledby="단순_요청simple_requests"><h3 id="단순_요청simple_requests"><a href="#단순_요청simple_requests">단순 요청(Simple requests)</a></h3><div class="section-content"><p>일부 요청은 CORS 사전 요청을 트리거하지 않습니다. 이러한 요청은 구식 <a href="https://www.w3.org/TR/2014/REC-cors-20140116/#terminology" class="external" target="_blank">CORS 사양</a>에서는 "단순 요청"이라고 불렸으나, 현재 CORS 정의하는 <a href="https://fetch.spec.whatwg.org/" class="external" target="_blank">Fetch 사양</a>에서는 이 용어를 사용하지 않습니다.</p> <p>이러한 동기는 HTML 4.0의 <a href="/ko/docs/Web/HTML/Element/form"><code><form></code></a> 요소(교차 사이트 <a href="/ko/docs/Web/API/Window/fetch" title="fetch()"><code>fetch()</code></a> 와 <a href="/ko/docs/Web/API/XMLHttpRequest"><code>XMLHttpRequest</code></a> 보다 이전에 존재한 요소)가 어떤 출처로든 단순 요청을 제출할 수 있다는 것입니다. 따라서 서버 쓰기를 수행하는 모든 사람은 이미 <a href="/ko/docs/Glossary/CSRF">사이트 간 요청 위조(Cross Site Request Forgery, CSRF)</a>로부터 보호하고 있어야 합니다. 이러한 가정 하에서, CSRF 의 위협은 폼 제출의 위협과 다르지 않기 때문에 서버는 폼 제출처럼 보이는 요청을 받기 위해 사전 요청에 응답하는 옵트-인(opt-in)을 할 필요가 없습니다. 그러나 서버는 여전히 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> 을 사용하여 스크립트와 응답을 공유하도록 옵트-인 해야 합니다.</p> <p>단순 요청은 다음 조건을 모두 충족하는 요청입니다.</p> <ul> <li> <p>다음 중 하나의 메서드</p> <ul> <li><a href="/ko/docs/Web/HTTP/Methods/GET"><code>GET</code></a></li> <li><a href="/ko/docs/Web/HTTP/Methods/HEAD"><code>HEAD</code></a></li> <li><a href="/ko/docs/Web/HTTP/Methods/POST"><code>POST</code></a></li> </ul> </li> <li> <p>유저 에이전트가 자동으로 설정한 헤더(예를들어, <a href="/ko/docs/Web/HTTP/Headers/Connection"><code>Connection</code></a>, <a href="/ko/docs/Web/HTTP/Headers/User-Agent"><code>User-Agent</code></a>, <a href="https://fetch.spec.whatwg.org/#forbidden-header-name" class="external" target="_blank">Fetch 명세에서 "forbidden header name"으로 정의한 헤더</a>) 외에, 수동으로 설정할 수 있는 헤더는 오직 <a href="https://fetch.spec.whatwg.org/#cors-safelisted-request-header" class="external" target="_blank">Fetch 명세에서 "CORS-safelisted request-header"로 정의한 헤더</a> 뿐입니다.</p> <ul> <li><a href="/ko/docs/Web/HTTP/Headers/Accept"><code>Accept</code></a></li> <li><a href="/ko/docs/Web/HTTP/Headers/Accept-Language"><code>Accept-Language</code></a></li> <li><a href="/ko/docs/Web/HTTP/Headers/Content-Language"><code>Content-Language</code></a></li> <li><a href="/ko/docs/Web/HTTP/Headers/Content-Type"><code>Content-Type</code></a> (아래의 추가 요구 사항에 유의하세요.)</li> <li><a href="/ko/docs/Web/HTTP/Headers/Range"><code>Range</code></a> (오직 <a href="https://fetch.spec.whatwg.org/#simple-range-header-value" class="external" target="_blank">단순 범위 헤더 값</a>, 예를 들어 <code>bytes=256-</code> 혹은 <code>bytes=127-255</code>)</li> </ul> </li> <li> <p><a href="/ko/docs/Web/HTTP/Headers/Content-Type"><code>Content-Type</code></a> 헤더에 지정된 <a href="/ko/docs/Glossary/MIME_type">미디어 타입</a>에 대해 허용된 타입/서브타입 조합은 다음과 같습니다.</p> <ul> <li><code>application/x-www-form-urlencoded</code></li> <li><code>multipart/form-data</code></li> <li><code>text/plain</code></li> </ul> </li> <li> <p>요청이 <a href="/ko/docs/Web/API/XMLHttpRequest"><code>XMLHttpRequest</code></a> 객체를 사용하여 이루어진 경우, 요청에 사용된 <a href="/ko/docs/Web/API/XMLHttpRequest/upload"><code>XMLHttpRequest.upload</code></a> 속성에 의해 반환된 객체에 이벤트 리스너가 등록되지 않습니다. 즉, <a href="/ko/docs/Web/API/XMLHttpRequest"><code>XMLHttpRequest</code></a> 인스턴스 <code>xhr</code>이 있다면 업로드를 모니터링하기 위한 이벤트 리스너를 추가하는 <code>xhr.upload.addEventListener()</code>를 호출하는 코드가 존재하지 않는다는 것입니다.</p> </li> <li> <p>요청에 <a href="/ko/docs/Web/API/ReadableStream"><code>ReadableStream</code></a> 객체가 사용되지 않습니다.</p> </li> </ul> <div class="notecard note"> <p><strong>참고:</strong> WebKit Nightly 와 Safari Technology Preview 는 Accept, Accept-Language, Content-Language 헤더에 허용되는 값에 추가적인 제약을 가합니다. 이러한 헤더 중 하나라도 "비표준" 값을 갖는 경우, WebKit/Safari 는 해당 요청을 "단순 요청"으로 간주하지 않습니다. WebKit/Safari 에서 어떤 값을 "비표준"으로 간주하는지는 다음의 WebKit 버그 외에는 문서화되어 있지 않습니다:</p> <ul> <li><a href="https://bugs.webkit.org/show_bug.cgi?id=165178" class="external" target="_blank">Require preflight for non-standard CORS-safelisted request headers Accept, Accept-Language, and Content-Language</a></li> <li><a href="https://bugs.webkit.org/show_bug.cgi?id=165566" class="external" target="_blank">Allow commas in Accept, Accept-Language, and Content-Language request headers for simple CORS</a></li> <li><a href="https://bugs.webkit.org/show_bug.cgi?id=166363" class="external" target="_blank">Switch to a blacklist model for restricted Accept headers in simple CORS requests</a></li> </ul> <p>이 부분은 CORS 명세가 아니기 때문에 다른 브라우저에는 이러한 추가 제한 사항이 없습니다.</p> </div> <p>예를 들어 <code>https://foo.example</code>의 웹 콘텐츠가 <code>https://bar.other</code> 도메인에서 JSON 콘텐츠를 가져오고자 한다고 가정해봅시다. 이러한 종류의 코드는 <code>foo.example</code>에 배포된 JavaScript에서 사용될 수 있습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>const fetchPromise = fetch("https://bar.other"); fetchPromise .then((response) => response.json()) .then((data) => { console.log(data); }); </code></pre></div> <p>이 작업은 클라이언트와 서버 간의 간단한 교환을 수행하며, 권한 처리를 위해 CORS 헤더를 사용합니다.</p> <p> <img src="https://mdn.github.io/shared-assets/images/diagrams/http/cors/simple-request.svg" alt="Diagram of simple CORS GET request" loading="lazy"> </p> <p>이 경우 브라우저가 서버로 보내는 내용을 살펴보겠습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>GET /resources/public-data/ HTTP/1.1 Host: bar.other User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Connection: keep-alive Origin: https://foo.example </code></pre></div> <p>주목할 요청 헤더는 <a href="/ko/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> 으로, 요청이 <code>https://foo.example</code> 에서 왔음을 나타냅니다.</p> <p>이제 서버가 어떻게 응답하는지 살펴보겠습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>HTTP/1.1 200 OK Date: Mon, 01 Dec 2008 00:23:53 GMT Server: Apache/2 Access-Control-Allow-Origin: * Keep-Alive: timeout=2, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: application/xml […XML Data…] </code></pre></div> <p>서버는 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> 헤더에 <strong>모든</strong> 출처에서 해당 리소스에 접근할 수 있음을 의미하는 <code>Access-Control-Allow-Origin: *</code> 을 반환합니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Origin: * </code></pre></div> <p>이 <a href="/ko/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> 및 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> 헤더 패턴은 접근 제어 프로토콜의 가장 간단한 사용법입니다. 만약 <code>https://bar.other</code> 의 리소스 소유자가 해당 리소스의 접근을 오직 <code>https://foo.example</code> 출처에서 오는 요청(즉, <code>https://foo.example</code> 이외의 도메인에서는 교차 출처 방식으로 해당 리소스에 접근할 수 없음)으로만 제한하길 원한다면 다음과 같이 응답을 보낼 것입니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Origin: https://foo.example </code></pre></div> <div class="notecard note"> <p><strong>참고:</strong> <a href="#requests_with_credentials">자격 증명</a>이 포함된 요청에 응답할 때, 서버는 Access-Control-Allow-Origin 헤더의 값으로 "*" 와일드카드를 지정하는 대신 특정 출처를 <strong>반드시</strong> 지정해야 합니다.</p> </div></div></section><section aria-labelledby="사전_요청preflighted_requests"><h3 id="사전_요청preflighted_requests"><a href="#사전_요청preflighted_requests">사전 요청(Preflighted requests)</a></h3><div class="section-content"><p><a href="#simple_requests">단순 요청</a>과 달리 "사전 전송(preflighted)" 요청의 경우 실제 요청을 보내는 것이 안전한지 판단하기 위해 브라우저가 먼저 <a href="/ko/docs/Web/HTTP/Methods/OPTIONS"><code>OPTIONS</code></a> 메서드를 사용해 다른 출처의 리소스에 HTTP 요청을 보냅니다. 이러한 교차 출처 요청은 사용자 데이터에 영향을 미칠 수 있기 때문에 사전에 전송됩니다.</p> <p>다음은 사전 요청이 필요한 요청의 예시입니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>const fetchPromise = fetch("https://bar.other/doc", { method: "POST", mode: "cors", headers: { "Content-Type": "text/xml", "X-PINGOTHER": "pingpong", }, body: "<person><name>Arun</name></person>", }); fetchPromise.then((response) => { console.log(response.status); }); </code></pre></div> <p>위 예제는 <code>POST</code> 요청과 함께 보낼 XML 바디를 만듭니다. 또한, 비표준 HTTP <code>X-PINGOTHER</code> 요청 헤더가 설정됩니다. 이러한 헤더는 HTTP/1.1의 일부가 아니지만 일반적으로 웹 애플리케이션에 유용합니다. 요청이 <code>Content-Type</code> 헤더에 <code>text/xml</code> 을 사용하고, 사용자 지정 헤더가 설정되어 있기 때문에 이 요청은 사전 요청됩니다.</p> <p> <img src="https://mdn.github.io/shared-assets/images/diagrams/http/cors/preflight-correct.svg" alt="Diagram of a request that is preflighted" loading="lazy"> </p> <div class="notecard note"> <p><strong>참고:</strong> 아래 설명한 바와 같이 실제 <code>POST</code> 요청에는 <code>Access-Control-Request-*</code> 헤더가 포함되지 않습니다. 이 헤더들은 오직 <code>OPTIONS</code> 요청에만 필요합니다.</p> </div> <p>클라이언트와 서버 간의 전체 통신을 살펴보겠습니다. 첫 번째 통신은 사전 요청과 그에 대한 응답입니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>OPTIONS /doc HTTP/1.1 Host: bar.other User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Connection: keep-alive Origin: https://foo.example Access-Control-Request-Method: POST Access-Control-Request-Headers: content-type,x-pingother HTTP/1.1 204 No Content Date: Mon, 01 Dec 2008 01:15:39 GMT Server: Apache/2 Access-Control-Allow-Origin: https://foo.example Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400 Vary: Accept-Encoding, Origin Keep-Alive: timeout=2, max=100 Connection: Keep-Alive </code></pre></div> <p>위 첫 번째 블록은 <a href="/ko/docs/Web/HTTP/Methods/OPTIONS"><code>OPTIONS</code></a> 메서드를 사용한 사전 요청을 나타냅니다. 브라우저는 위 JavaScript 코드 스니펫(snippet)에서 사용한 요청 파라미터를 기준으로 사전 요청이 필요하다고 결정합니다. 이 사전 요청을 통해 서버는 실제 요청 파라미터로 요청을 보내는 것이 적절한지 응답할 수 있습니다. OPTIONS 는 서버로부터 추가 정보를 얻기 위해 사용되는 HTTP/1.1 메서드이며 리소스를 변경할 수 없는 <a href="/ko/docs/Glossary/Safe/HTTP">안전한</a> 메서드입니다. OPTIONS 요청과 함께 두 개의 다른 요청 헤더가 전송됩니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Request-Method: POST Access-Control-Request-Headers: content-type,x-pingother </code></pre></div> <p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Request-Method"><code>Access-Control-Request-Method</code></a> 헤더는 사전 요청의 일부로써 서버에게 실제 요청이 전송될 때 <code>POST</code> 요청 메서드를 사용할 것임을 알립니다. <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers"><code>Access-Control-Request-Headers</code></a> 헤더는 실제 요청이 전송될 때 사용자 정의 헤더 <code>X-PINGOTHER</code> 와 <code>Content-Type</code> 를 사용할 것임을 서버에게 알립니다. 이제 서버는 이러한 조건 하에서 요청을 수락할 수 있는지 여부를 결정할 기회를 갖게 됩니다.</p> <p>위 두 번째 블록은 서버가 반환하는 응답으로, 요청 메서드(<code>POST</code>)와 요청 헤더(<code>X-PINGOTHER</code>)가 허용된다는 것을 나타냅니다. 이어지는 내용을 자세히 살펴보겠습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Origin: https://foo.example Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400 </code></pre></div> <p>서버는 <code>Access-Control-Allow-Origin: https://foo.example</code> 헤더로 응답하여 요청을 보낸 출처 도메인만 접근 가능하도록 제한합니다. 또한 <code>Access-Control-Allow-Methods</code> 헤더로 응답하여 <code>POST</code> 와 <code>GET</code> 메서드가 해당 리소스를 요청하는 데 유효한 메서드임을 나타냅니다(이 헤더는 <a href="/ko/docs/Web/HTTP/Headers/Allow"><code>Allow</code></a> 응답 헤더와 유사하지만, 접근 제어 맥락 내에서 엄격하게 사용됩니다).</p> <p>서버는 또한 <code>Access-Control-Allow-Headers</code> 헤더에 "<code>X-PINGOTHER, Content-Type</code>" 값을 설정하여 보내 이 헤더들이 실제 요청에 사용할 수 있는 허용된 헤더임을 확인해줍니다. <code>Access-Control-Allow-Methods</code> 와 마찬가지로 <code>Access-Control-Allow-Headers</code> 는 허용 가능한 헤더의 쉼표로 구분합니다.</p> <p>마지막으로, <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age"><code>Access-Control-Max-Age</code></a> 는 또 다른 사전 요청을 보내지 않도록 사전 요청에 대한 응답을 얼마나 오래동안 캐시할 수 있는지 초 단위 시간 값을 제공합니다. 기본 값은 5초입니다. 현재 최대 캐시 시간은 86400초(= 24시간)입니다. 각 브라우저는 <code>Access-Control-Max-Age</code> 가 이를 초과할 때 우선되는 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age">최대 내부 값</a>을 가집니다.</p> <p>사전 요청이 한번 완료되면 실제 요청이 전송됩니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>POST /doc HTTP/1.1 Host: bar.other User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Connection: keep-alive X-PINGOTHER: pingpong Content-Type: text/xml; charset=UTF-8 Referer: https://foo.example/examples/preflightInvocation.html Content-Length: 55 Origin: https://foo.example Pragma: no-cache Cache-Control: no-cache <person><name>Arun</name></person> HTTP/1.1 200 OK Date: Mon, 01 Dec 2008 01:15:40 GMT Server: Apache/2 Access-Control-Allow-Origin: https://foo.example Vary: Accept-Encoding, Origin Content-Encoding: gzip Content-Length: 235 Keep-Alive: timeout=2, max=99 Connection: Keep-Alive Content-Type: text/plain [Some XML payload] </code></pre></div> <h4 id="사전_요청과_리다이렉트">사전 요청과 리다이렉트</h4> <p>현재 모든 브라우저가 사전 요청 후 리디렉션하는 것을 지원하지 않습니다. 사전 요청 후 리다이렉트가 발생하면 일부 브라우저는 다음과 같은 오류 메시지를 띄웁니다.</p> <blockquote> <p> 요청이 <code>https://example.com/foo</code> 로 리디렉션되었습니다. 이는 사전 요청이 필요한 교차 출처 요청에 대해 허용되지 않습니다. 요청은 사전 요청이 필요합니다. 이는 교차 출처 리디렉트를 허용되지 않습니다. </p> </blockquote> <p>CORS 프로토콜은 원래 그러한 동작(리다이렉트)을 필요했지만, <a href="https://github.com/whatwg/fetch/commit/0d9a4db8bc02251cc9e391543bb3c1322fb882f2" class="external" target="_blank">이후 더 이상 필요하지 않도록 변경되었습니다</a>. 그러나 모든 브라우저가 변경 사항을 구현하지는 않았기 때문에, 따라서 원래 필요했었던 동작(리다이렉트)이 여전히 보입니다.</p> <p>브라우저가 명세를 따라잡을 때까지 다음 중 하나 또는 둘 다 수행하여 이 제한을 해결할 수 있습니다.</p> <ul> <li>사전 요청을 피하거나 리디렉션을 피하기 위해(혹은 둘 다) 서버 측 동작을 변경</li> <li>사전 요청을 발생시키지 않는 <a href="#simple_requests">단순 요청</a>으로 변경</li> </ul> <p>위 방법이 가능하지 않은 경우 다른 방법도 있습니다.</p> <ol> <li>실제 사전 요청이 도달할 URL 을 판별하기 위해 Fetch API 의 <a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/API/Response/url"><code>Response.url</code></a> 또는 <a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/API/XMLHttpRequest/responseURL"><code>XMLHttpRequest.responseURL</code></a>을 사용해 <a href="#simple_requests">단순 요청</a>을 만듭니다.</li> <li>첫 번째 단계에서 <code>Response.url</code> 혹은 <code>XMLHttpRequest.responseURL</code> 로부터 얻은 URL을 사용하여 또 다른 요청(실제 요청)을 만듭니다.</li> </ol> <p>그러나 <code>Authorization</code> 헤더가 포함되어 있어 사전 요청을 트리거 한 요청이라면 위 단계를 통해 이 제한을 우회할 수 없습니다. 그리고 요청이 이뤄지는 서버에 대한 제어가 없다면 전혀 우회할 수 없습니다.</p></div></section><section aria-labelledby="자격_증명을_포함한_요청"><h3 id="자격_증명을_포함한_요청"><a href="#자격_증명을_포함한_요청">자격 증명을 포함한 요청</a></h3><div class="section-content"><div class="notecard note"> <p><strong>참고:</strong> 다른 도메인으로 자격 증명 요청을 할 때, 서드파티 쿠키 정책이 여전히 적용됩니다. 이 정책은 서버와 클라이언트에서 설명된 모든 설정과 관계없이 항상 적용됩니다.</p> </div> <p><a href="/ko/docs/Web/API/Window/fetch" title="fetch()"><code>fetch()</code></a> 혹은 <a href="/ko/docs/Web/API/XMLHttpRequest"><code>XMLHttpRequest</code></a> 와 CORS 을 통해 제공된 가장 흥미로운 기능은 <a href="/ko/docs/Web/HTTP/Cookies">HTTP 쿠키</a>와 HTTP 인증 정보를 인식하는 "자격 증명이 포함된" 요청을 할 수 있다는 것입니다. 기본적으로 교차 출처 <code>fetch()</code> 또는 <code>XMLHttpRequest</code> 호출에서는 브라우저가 자격 증명을 전송하지 <strong>않습니다.</strong></p> <p><code>fetch()</code> 요청에 자격 증명을 포함하려면, <a href="/en-US/docs/Web/API/RequestInit" class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다"><code>credentials</code></a> 옵션을 <code>"include"</code> 로 설정하십시오.</p> <p><code>XMLHttpRequest</code> 요청에 자격 증명을 포함하려면, <a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/API/XMLHttpRequest/withCredentials"><code>XMLHttpRequest.withCredentials</code></a> 속성을 <code>true</code> 로 설정하십시오.</p> <p>이 예시에서 <code>https://foo.example</code> 에서 로드된 콘텐츠는 <code>https://bar.other</code> 의 리소스에 쿠키가 포함된 GET 메서드 단순 요청을 보냅니다. foo.example 의 콘텐츠는 다음과 같은 JavaScript 코드를 포함할 수 있습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">js</span></div><pre class="brush: js notranslate"><code>const url = "https://bar.other/resources/credentialed-content/"; const request = new Request(url, { credentials: "include" }); const fetchPromise = fetch(request); fetchPromise.then((response) => console.log(response)); </code></pre></div> <p>이 코드는 <a href="/ko/docs/Web/API/Request"><code>Request</code></a> 객체를 생성하고, 생성자에서 <code>credentials</code> 옵션을 <code>"include"</code> 로 설정한 다음 이 요청을 <code>fetch()</code> 에 전달합니다. 이는 <code>GET</code> 메서드 단순 요청이기 때문에 사전 요청이 수행되지 않지만, 브라우저는 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials"><code>Access-Control-Allow-Credentials</code></a><code>: true</code> 헤더가 없는 응답을 <strong>거부</strong>하고, 호출한 웹 콘텐츠에 응답을 제공하지 <strong>않습니다.</strong></p> <p> <img src="https://mdn.github.io/shared-assets/images/diagrams/http/cors/include-credentials.svg" alt="Diagram of a simple GET request with Access-Control-Allow-Credentials" loading="lazy"> </p> <p>다음은 클라이언트와 서버 간의 샘플 교환입니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>GET /resources/credentialed-content/ HTTP/1.1 Host: bar.other User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Connection: keep-alive Referer: https://foo.example/examples/credential.html Origin: https://foo.example Cookie: pageAccess=2 HTTP/1.1 200 OK Date: Mon, 01 Dec 2008 01:34:52 GMT Server: Apache/2 Access-Control-Allow-Origin: https://foo.example Access-Control-Allow-Credentials: true Cache-Control: no-cache Pragma: no-cache Set-Cookie: pageAccess=3; expires=Wed, 31-Dec-2008 01:34:53 GMT Vary: Accept-Encoding, Origin Content-Encoding: gzip Content-Length: 106 Keep-Alive: timeout=2, max=100 Connection: Keep-Alive Content-Type: text/plain [text/plain payload] </code></pre></div> <p>비록 요청의 <code>Cookie</code> 헤더가 <code>https://bar.other</code> 을 위한 쿠키를 포함하고 있지만, 이 예에서 설명한 것처럼 bar.other 가 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials"><code>Access-Control-Allow-Credentials</code></a> 헤더에 <code>true</code> 값을 포함하여 응답하지 않으면, 응답은 무시되고 웹 콘텐츠에 제공되지 않습니다.</p> <h4 id="사전_요청과_자격_증명">사전 요청과 자격 증명</h4> <p>CORS 사전 요청에는 자격 증명이 절대로 포함되지 않아야 합니다. 사전 요청에 대한 응답은 실제 요청이 자격 증명과 함께 수행될 수 있음을 나타내기 위해 <code>Access-Control-Allow-Credentials: true</code> 를 명시해야 합니다.</p> <div class="notecard note"> <p><strong>참고:</strong> 알부 기업 인증 서비스는 사전 요청할 때 TLS 클라이언트 인증서을 보내는 것을 요청합니다. 이는 <a href="https://fetch.spec.whatwg.org/#cors-protocol-and-credentials" class="external" target="_blank">Fetch</a> 사양에 어긋나는 동작입니다.</p> <p>파이어폭스(Firefox)87 는 <code>network.cors_preflight.allow_client_cert</code> 을 <code>true</code> 으로 설정하여 이 비표준 동작을 활성화하는 것을 허용합니다.(<a href="https://bugzil.la/1511151" class="external" target="_blank">Firefox bug 1511151</a>) 현재 Chromium 기반 브라우저는 CORS 사전 요청에서 항상 TLS 클라이언트 인증서를 전송합니다 (<a href="https://crbug.com/775438" class="external" target="_blank">Chrome bug 775438</a>).</p> </div> <h4 id="자격_증명이_포함된_요청과_와일드카드">자격 증명이 포함된 요청과 와일드카드</h4> <p>자격 증명이 포함된 요청에 응답하는 경우</p> <ul> <li> <p>서버는 <code>Access-Control-Allow-Origin</code> 응답 헤더 값으로 "<code>*</code>" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 출처를 지정해야 합니다. 예를 들어 <code>Access-Control-Allow-Origin: https://example.com</code>.</p> </li> <li> <p>서버는 <code>Access-Control-Allow-Headers</code> 응답 헤더 값으로 "<code>*</code>" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 헤더 이름 목록을 지정해야 합니다. 예를 들어 <code>Access-Control-Allow-Headers: X-PINGOTHER, Content-Type</code>.</p> </li> <li> <p>서버는 <code>Access-Control-Allow-Methods</code> 응답 헤더 값으로 "<code>*</code>" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 메서드 이름 목록을 지정해야 합니다. 예를 들어 <code>Access-Control-Allow-Methods: POST, GET</code>.</p> </li> <li> <p>서버는 <code>Access-Control-Expose-Headers</code> 응답 헤더 값으로 "<code>*</code>" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 헤더 이름 목록을 지정해야 합니다. 예를 들어 <code>Access-Control-Expose-Headers: Content-Encoding, Kuma-Revision</code>.</p> </li> </ul> <p>요청에 자격 증명(가장 일반적으로는 <code>Cookie</code> 헤더)이 포함되고 응답에 <code>Access-Control-Allow-Origin: *</code> 헤더(즉, 와일드카드)가 포함되어 있으면, 브라우저는 응답에 대한 접근을 차단하고 개발자 도구 콘솔에 CORS 오류를 보고합니다.</p> <p>그러나 요청에 자격 증명(예를 들어 <code>Cookie</code> 헤더)이 포함되고 응답에 와일드카드 대신 실제 출처(예를 들어 <code>Access-Control-Allow-Origin: https://example.com</code>)가 포함되어 있으면, 브라우저는 지정된 출처에서 응답에 접근할 수 있도록 허용합니다.</p> <p>또한 응답의 <code>Access-Control-Allow-Origin</code> 헤더 값에 실제 출처가 아닌 "<code>*</code>" 와일드카드인 경우 응답의 <code>Set-Cookie</code> 헤더는 쿠키를 설정하지 않습니다.</p> <h4 id="서드_파티_쿠키">서드 파티 쿠키</h4> <p>CORS 응답에 설정된 쿠키는 일반적인 서드 파티(third-party) 쿠키 정책의 적용을 받습니다. 위의 예에서, 페이지는 <code>foo.example</code> 에서 로드되지만, 응답의 <code>Cookie</code> 헤더는 <code>bar.other</code> 에서 전송되므로 사용자의 브라우저가 모든 서드-파티 쿠키를 거부하도록 설정된 경우 해당 쿠키는 저장되지 않습니다.</p> <p>요청의 쿠키도 일반적인 서드-파티 쿠키 정책에 따라 억제될 수 있습니다. 따라서 강제된 쿠키 정책은 이 장에서 설명된 기능을 무효화 할 수 있으며, 자격 증명이 포함된 요청을 전혀 수행할 수 없게 만들 수 있습니다.</p> <p><a href="/ko/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value">SameSite</a> 속성에 대한 쿠키 정책이 적용됩니다.</p></div></section><section aria-labelledby="http_응답_헤더"><h2 id="http_응답_헤더"><a href="#http_응답_헤더">HTTP 응답 헤더</a></h2><div class="section-content"><p>이 섹션에서는 교차 출처 리소스 공유 명세에 정의된 대로 서버가 접근 제어 요청을 위해 보내는 HTTP 응답 헤더가 나열되어 있습니다. 이전 섹션에서는 이러한 내용이 실제로 어떻게 작동하는지에 대한 개요를 제공합니다.</p></div></section><section aria-labelledby="access-control-allow-origin"><h3 id="access-control-allow-origin"><a href="#access-control-allow-origin">Access-Control-Allow-Origin</a></h3><div class="section-content"><p>반환된 리소스에는 다음 구문과 함께 하나의 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin"><code>Access-Control-Allow-Origin</code></a> 헤더가 있을 수 있습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Origin: <origin> | * </code></pre></div> <p><code>Access-Control-Allow-Origin</code> 은 단일 출처를 지정하여 브라우저가 해당 출처가 리소스에 접근하도록 허용합니다. 또는 자격 증명이 <strong>없는</strong> 요청의 경우 "<code>*</code>" 와일드 카드는 브라우저의 origin에 상관없이 모든 리소스에 접근하도록 허용합니다.</p> <p>예를 들어 <code>https://mozilla.org</code> 의 코드가 리소스에 접근 할 수 있도록 하려면 다음과 같이 지정할 수 있습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Origin: https://mozilla.org Vary: Origin </code></pre></div> <p>서버가 "<code>*</code>" 와일드카드 대신에 하나의 출처를 지정하는 경우(이 출처는 허가된 출처 리스트의 일부로 요청 출처에 따라 동적으로 변경할 수 있습니다.), 서버는 응답이 <a href="/ko/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> 요청 헤더에 따라 다르다는 것을 클라이언트에 알려주기 위해 <a href="/ko/docs/Web/HTTP/Headers/Vary"><code>Vary</code></a> 응답 헤더에 <code>Origin</code> 을 포함해야 합니다.</p></div></section><section aria-labelledby="access-control-expose-headers"><h3 id="access-control-expose-headers"><a href="#access-control-expose-headers">Access-Control-Expose-Headers</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Expose-Headers"><code>Access-Control-Expose-Headers</code></a> 헤더는 JavaScript(예를 들어 <a class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다" href="/en-US/docs/Web/API/Response/headers"><code>Response.headers</code></a>)가 브라우저에서 접근할 수 있는 허용된 헤더 목록에 지정된 헤더를 추가합니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Expose-Headers: <header-name>[, <header-name>]* </code></pre></div> <p>예를 들면 다음과 같습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header </code></pre></div> <p>위 응답에 의해 <code>X-My-Custom-Header</code> 와 <code>X-Another-Custom-Header</code> 헤더가 브라우저에 노출됩니다.</p></div></section><section aria-labelledby="access-control-max-age"><h3 id="access-control-max-age"><a href="#access-control-max-age">Access-Control-Max-Age</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age"><code>Access-Control-Max-Age</code></a> 헤더는 사전 요청 결과를 캐시할 수 있는 시간을 나타냅니다. 사전 요청 예제는 위를 참조하세요.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Max-Age: <delta-seconds> </code></pre></div> <p><code>delta-seconds</code> 파라미터는 결과를 캐시할 수 있는 시간(초)를 나타냅니다.</p></div></section><section aria-labelledby="access-control-allow-credentials"><h3 id="access-control-allow-credentials"><a href="#access-control-allow-credentials">Access-Control-Allow-Credentials</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials"><code>Access-Control-Allow-Credentials</code></a> 헤더는 <code>credentials</code>가 참일 때 요청에 대한 응답을 표시할 수 있는지 여부를 나타냅니다. 사전 요청에 대한 응답의 일부로 사용될 때, 이 헤더는 실제 요청이 자격 증명과 함께 수행될 수 있는지 여부를 나타냅니다. 단, <code>GET</code> 메서드 단순 요청은 사전 요청이 수행되지 않으므로, 자격 증명과 함께 리소스에 대한 요청이 이루어진 경우 이 헤더가 리소스와 함께 반환되지 않으면 브라우저는 응답을 무시하고 웹 콘텐츠에 반환하지 않습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Credentials: true </code></pre></div> <p><a href="#%EC%9E%90%EA%B2%A9_%EC%A6%9D%EB%AA%85%EC%9D%84_%ED%8F%AC%ED%95%A8%ED%95%9C_%EC%9A%94%EC%B2%AD">자격 증명이 포함된 요청</a>은 위에서 논의하였습니다.</p></div></section><section aria-labelledby="access-control-allow-methods"><h3 id="access-control-allow-methods"><a href="#access-control-allow-methods">Access-Control-Allow-Methods</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Methods"><code>Access-Control-Allow-Methods</code></a> 헤더는 리소스에 접근할 때 허용되는 메서드를 지정합니다. 이 헤더는 사전 요청에 대한 응답으로 사용됩니다. 사전 요청이 발생하는 조건은 위에서 논의하였습니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Methods: <method>[, <method>]* </code></pre></div> <p>위에 <a href="/ko/docs/Glossary/Preflight_request">사전 요청</a>의 예가 제공되어 있으며, 이 예시에는 이 헤더를 브라우저에 전송하는 예가 포함되어 있습니다.</p></div></section><section aria-labelledby="access-control-allow-headers"><h3 id="access-control-allow-headers"><a href="#access-control-allow-headers">Access-Control-Allow-Headers</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Headers"><code>Access-Control-Allow-Headers</code></a> 헤더는 <a href="/ko/docs/Glossary/Preflight_request">사전 요청</a>에 대한 응답으로 사용되며, 실제 요청을 할 때 사용할 수 있는 HTTP 헤더를 나타냅니다. 이 헤더는 브라우저의 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers"><code>Access-Control-Request-Headers</code></a> 헤더에 대한 서버 측의 응답입니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Allow-Headers: <header-name>[, <header-name>]* </code></pre></div></div></section><section aria-labelledby="http_요청_헤더"><h2 id="http_요청_헤더"><a href="#http_요청_헤더">HTTP 요청 헤더</a></h2><div class="section-content"><p>이 섹션에서는 클라이언트가 교차 출처 공유 기능을 사용하기 위해 HTTP 요청을 발행할 때 사용할 수 있는 헤더들을 나열합니다. 이러한 헤더는 서버를 호출할 때 개발자를 위해 설정됩니다. 교차 출처 요청을 만드는 개발자는 이러한 교차 출처 공유 요청 헤더를 프로그래밍적으로 설정할 필요가 없습니다.</p></div></section><section aria-labelledby="origin"><h3 id="origin"><a href="#origin">Origin</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> 헤더는 교차 출처 접근 요청 또는 사전 요청 출처를 나타냅니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Origin: <origin> </code></pre></div> <p>origin 값은 요청이 시작된 서버를 나타내는 URI 입니다. 경로 정보는 포함하지 않고, 오직 서버 이름만 포함합니다.</p> <div class="notecard note"> <p><strong>참고:</strong> <code>origin</code> 값은 <code>null</code> 또는 URI 가 올 수 있습니다.</p> </div> <p>접근 제어 요청에는 <strong>항상</strong> <a href="/ko/docs/Web/HTTP/Headers/Origin"><code>Origin</code></a> 헤더가 전송됩니다.</p></div></section><section aria-labelledby="access-control-request-method"><h3 id="access-control-request-method"><a href="#access-control-request-method">Access-Control-Request-Method</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Request-Method"><code>Access-Control-Request-Method</code></a> 헤더는 실제 요청에서 어떤 HTTP 메서드를 사용할지 서버에게 알려주기 위해 사전 요청할 때 사용됩니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Request-Method: <method> </code></pre></div> <p>이 사용법의 예제는 <a href="#%EC%82%AC%EC%A0%84_%EC%9A%94%EC%B2%ADpreflighted_requests">위에서</a> 찾을 수 있습니다.</p></div></section><section aria-labelledby="access-control-request-headers"><h3 id="access-control-request-headers"><a href="#access-control-request-headers">Access-Control-Request-Headers</a></h3><div class="section-content"><p><a href="/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers"><code>Access-Control-Request-Headers</code></a> 헤더는 사전 요청을 발행할 때 사용되며, 실제 요청에서 사용할 HTTP 헤더를 서버에 알리기 위해 사용됩니다(예를 들어 <a href="/en-US/docs/Web/API/RequestInit" class="only-in-en-us" title="이 페이지는 현재 영어로만 제공됩니다"><code>headers</code></a> 옵션을 통해 전달). 이 브라우저 측 헤더는 <a href="/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Headers"><code>Access-Control-Allow-Headers</code></a> 라는 서버 측 헤더로 응답 받게 됩니다.</p> <div class="code-example"><div class="example-header"><span class="language-name">http</span></div><pre class="brush: http notranslate"><code>Access-Control-Request-Headers: <field-name>[,<field-name>]* </code></pre></div> <p>이 사용법의 예제는 <a href="#%EC%82%AC%EC%A0%84_%EC%9A%94%EC%B2%ADpreflighted_requests">위에서</a> 찾을 수 있습니다.</p></div></section><h2 id="명세서"><a href="#명세서">명세서</a></h2><table class="standard-table"><thead><tr><th scope="col">Specification</th></tr></thead><tbody><tr><td><a href="https://fetch.spec.whatwg.org/#http-access-control-allow-origin">Fetch Standard<!-- --> <br/><small># <!-- -->http-access-control-allow-origin</small></a></td></tr></tbody></table><h2 id="브라우저_호환성"><a href="#브라우저_호환성">브라우저 호환성</a></h2><p>BCD tables only load in the browser<noscript> <!-- -->with JavaScript enabled. Enable JavaScript to view data.</noscript></p><section aria-labelledby="같이_보기"><h2 id="같이_보기"><a href="#같이_보기">같이 보기</a></h2><div class="section-content"><ul> <li> <p><a href="/ko/docs/Web/HTTP/CORS/Errors">CORS errors</a></p> </li> <li> <p><a href="https://enable-cors.org/server.html" class="external" target="_blank">CORS 활성화: 내 서버에 CORS 지원을 추가하고 싶다</a></p> </li> <li><a href="/ko/docs/Web/API/XMLHttpRequest"><code>XMLHttpRequest</code></a></li> <li> <p><a href="/ko/docs/Web/API/Fetch_API">Fetch API</a></p> </li> <li> <p><a href="https://httptoolkit.tech/will-it-cors" class="external" target="_blank">CORS 일까요?</a> - an interactive CORS explainer & generator</p> </li> <li> <p><a href="https://www.telerik.com/blogs/using-cors-with-all-modern-browsers" class="external" target="_blank">모든(현대) 브라우저에서 CORS 사용하기</a></p> </li> <li> <p><a href="https://alfilatov.com/posts/run-chrome-without-cors/" class="external" target="_blank">CORS 없이 Chrome 브라우저를 실행하는 방법</a></p> </li> <li> <p><a href="https://stackoverflow.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested-resource-whe/43881141#43881141" class="external" target="_blank">일반적인 문제를 다루기 위한 방법에 대한 스택 오버플로우 답변</a>:</p> <ul> <li>How to avoid the CORS preflight</li> <li>How to use a CORS proxy to get around <em>"No Access-Control-Allow-Origin header"</em></li> <li>How to fix <em>"Access-Control-Allow-Origin header must not be the wildcard"</em></li> </ul> </li> </ul></div></section></article><aside class="article-footer"><div class="article-footer-inner"><div class="svg-container"><svg xmlns="http://www.w3.org/2000/svg" width="162" height="162" viewBox="0 0 162 162" fill="none" role="none"><mask id="b" fill="#fff"><path d="M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z"></path></mask><path stroke="url(#a)" stroke-dasharray="6, 6" stroke-width="2" d="M97.203 47.04c8.113-7.886 18.004-13.871 28.906-17.492a78 78 0 0 1 33.969-3.39c11.443 1.39 22.401 5.295 32.024 11.411s17.656 14.28 23.476 23.86c5.819 9.579 9.269 20.318 10.083 31.385a69.85 69.85 0 0 1-5.387 32.44c-4.358 10.272-11.115 19.443-19.747 26.801-8.632 7.359-18.908 12.709-30.034 15.637l-6.17-21.698c7.666-2.017 14.746-5.703 20.694-10.773 5.948-5.071 10.603-11.389 13.606-18.467a48.14 48.14 0 0 0 3.712-22.352c-.561-7.625-2.938-15.025-6.948-21.625s-9.544-12.226-16.175-16.44-14.181-6.904-22.065-7.863a53.75 53.75 0 0 0-23.405 2.336c-7.513 2.495-14.327 6.62-19.918 12.053z" mask="url(#b)" style="stroke:url(#a)" transform="translate(-63.992 -25.587)"></path><ellipse cx="8.066" cy="111.597" fill="var(--background-tertiary)" rx="53.677" ry="53.699" transform="matrix(.71707 -.697 .7243 .6895 0 0)"></ellipse><g clip-path="url(#c)" transform="translate(-63.992 -25.587)"><path fill="#9abff5" d="m144.256 137.379 32.906 12.434a4.41 4.41 0 0 1 2.559 5.667l-9.326 24.679a4.41 4.41 0 0 1-5.667 2.559l-8.226-3.108-2.332 6.17c-.466 1.233-.375 1.883-1.609 1.417l-2.253-.527c-.411-.155-.95-.594-1.206-1.161l-4.734-10.484-12.545-4.741a4.41 4.41 0 0 1-2.559-5.667l9.325-24.679a4.41 4.41 0 0 1 5.667-2.559m9.961 29.617 8.227 3.108 3.264-8.638-.498-6.768-4.113-1.555.548 7.258-4.319-1.632zm-12.339-4.663 8.226 3.108 3.264-8.637-.498-6.769-4.113-1.554.548 7.257-4.319-1.632z"></path></g><g clip-path="url(#d)" transform="translate(-63.992 -25.587)"><path fill="#81b0f3" d="M135.35 60.136 86.67 41.654c-3.346-1.27-7.124.428-8.394 3.775L64.414 81.938c-1.27 3.347.428 7.125 3.774 8.395l12.17 4.62-3.465 9.128c-.693 1.826-1.432 2.457.394 3.15l3.014 1.625c.609.231 1.637.274 2.477-.104l15.53-6.983 18.56 7.047c3.346 1.27 7.124-.428 8.395-3.775l13.862-36.51c1.27-3.346-.428-7.124-3.775-8.395M95.261 83.207l-12.17-4.62 4.852-12.779 7.19-7.017 6.085 2.31-7.725 7.51 6.389 2.426zm18.255 6.93-12.17-4.62 4.852-12.778 7.189-7.017 6.085 2.31-7.725 7.51 6.39 2.426z"></path></g><defs><clipPath id="c"><path fill="#fff" d="m198.638 146.586-65.056-24.583-24.583 65.057 65.056 24.582z"></path></clipPath><clipPath id="d"><path fill="#fff" d="m66.438 14.055 96.242 36.54-36.54 96.243-96.243-36.54z"></path></clipPath><linearGradient id="a" x1="97.203" x2="199.995" y1="47.04" y2="152.793" gradientUnits="userSpaceOnUse"><stop stop-color="#086DFC"></stop><stop offset="0.246" stop-color="#2C81FA"></stop><stop offset="0.516" stop-color="#5497F8"></stop><stop offset="0.821" stop-color="#80B0F6"></stop><stop offset="1" stop-color="#9ABFF5"></stop></linearGradient></defs></svg></div><h2>Help improve MDN</h2><fieldset class="feedback"><label>Was this page helpful to you?</label><div class="button-container"><button type="button" class="button primary has-icon yes"><span class="button-wrap"><span class="icon icon-thumbs-up "></span>Yes</span></button><button type="button" class="button primary has-icon no"><span class="button-wrap"><span class="icon icon-thumbs-down "></span>No</span></button></div></fieldset><a class="contribute" href="https://github.com/mdn/translated-content/blob/main/CONTRIBUTING.md" title="This will take you to our contribution guidelines on GitHub." target="_blank" rel="noopener noreferrer">Learn how to contribute</a>.<p class="last-modified-date">This page was last modified on<!-- --> <time dateTime="2024-08-12T08:04:04.000Z">2024년 8월 12일</time> by<!-- --> <a href="/ko/docs/Web/HTTP/CORS/contributors.txt" rel="nofollow">MDN contributors</a>.</p><div id="on-github" class="on-github"><a href="https://github.com/mdn/translated-content/blob/main/files/ko/web/http/cors/index.md?plain=1" title="Folder: ko/web/http/cors (Opens in a new tab)" target="_blank" rel="noopener noreferrer">View this page on GitHub</a> <!-- -->•<!-- --> <a href="https://github.com/mdn/translated-content/issues/new?template=page-report-ko.yml&mdn-url=https%3A%2F%2Fdeveloper.mozilla.org%2Fko%2Fdocs%2FWeb%2FHTTP%2FCORS&metadata=%3C%21--+Do+not+make+changes+below+this+line+--%3E%0A%3Cdetails%3E%0A%3Csummary%3EPage+report+details%3C%2Fsummary%3E%0A%0A*+Folder%3A+%60ko%2Fweb%2Fhttp%2Fcors%60%0A*+MDN+URL%3A+https%3A%2F%2Fdeveloper.mozilla.org%2Fko%2Fdocs%2FWeb%2FHTTP%2FCORS%0A*+GitHub+URL%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Ftranslated-content%2Fblob%2Fmain%2Ffiles%2Fko%2Fweb%2Fhttp%2Fcors%2Findex.md%0A*+Last+commit%3A+https%3A%2F%2Fgithub.com%2Fmdn%2Ftranslated-content%2Fcommit%2F95eb50659c85f6fd2c17974117f33e7be92b1f22%0A*+Document+last+modified%3A+2024-08-12T08%3A04%3A04.000Z%0A%0A%3C%2Fdetails%3E" title="This will take you to GitHub to file a new issue." target="_blank" rel="noopener noreferrer">Report a problem with this content</a></div></div></aside></main></div></div><footer id="nav-footer" class="page-footer"><div class="page-footer-grid"><div class="page-footer-logo-col"><a href="/" class="mdn-footer-logo" aria-label="MDN homepage"><svg width="48" height="17" viewBox="0 0 48 17" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="mdn-footer-logo-svg">MDN logo</title><path d="M20.04 16.512H15.504V10.416C15.504 9.488 15.344 8.824 15.024 8.424C14.72 8.024 14.264 7.824 13.656 7.824C12.92 7.824 12.384 8.064 12.048 8.544C11.728 9.024 11.568 9.64 11.568 10.392V14.184H13.008V16.512H8.472V10.416C8.472 9.488 8.312 8.824 7.992 8.424C7.688 8.024 7.232 7.824 6.624 7.824C5.872 7.824 5.336 8.064 5.016 8.544C4.696 9.024 4.536 9.64 4.536 10.392V14.184H6.6V16.512H0V14.184H1.44V8.04H0.024V5.688H4.536V7.32C5.224 6.088 6.32 5.472 7.824 5.472C8.608 5.472 9.328 5.664 9.984 6.048C10.64 6.432 11.096 7.016 11.352 7.8C11.992 6.248 13.168 5.472 14.88 5.472C15.856 5.472 16.72 5.776 17.472 6.384C18.224 6.992 18.6 7.936 18.6 9.216V14.184H20.04V16.512Z" fill="currentColor"></path><path d="M33.6714 16.512H29.1354V14.496C28.8314 15.12 28.3834 15.656 27.7914 16.104C27.1994 16.536 26.4154 16.752 25.4394 16.752C24.0154 16.752 22.8954 16.264 22.0794 15.288C21.2634 14.312 20.8554 12.984 20.8554 11.304C20.8554 9.688 21.2554 8.312 22.0554 7.176C22.8554 6.04 24.0634 5.472 25.6794 5.472C26.5594 5.472 27.2794 5.648 27.8394 6C28.3994 6.352 28.8314 6.8 29.1354 7.344V2.352H26.9754V0H32.2314V14.184H33.6714V16.512ZM29.1354 11.04V10.776C29.1354 9.88 28.8954 9.184 28.4154 8.688C27.9514 8.176 27.3674 7.92 26.6634 7.92C25.9754 7.92 25.3674 8.176 24.8394 8.688C24.3274 9.2 24.0714 10.008 24.0714 11.112C24.0714 12.152 24.3114 12.944 24.7914 13.488C25.2714 14.032 25.8394 14.304 26.4954 14.304C27.3114 14.304 27.9514 13.96 28.4154 13.272C28.8954 12.584 29.1354 11.84 29.1354 11.04Z" fill="currentColor"></path><path d="M47.9589 16.512H41.9829V14.184H43.4229V10.416C43.4229 9.488 43.2629 8.824 42.9429 8.424C42.6389 8.024 42.1829 7.824 41.5749 7.824C40.8389 7.824 40.2709 8.056 39.8709 8.52C39.4709 8.968 39.2629 9.56 39.2469 10.296V14.184H40.6869V16.512H34.7109V14.184H36.1509V8.04H34.5909V5.688H39.2469V7.344C39.9669 6.096 41.1269 5.472 42.7269 5.472C43.7509 5.472 44.6389 5.776 45.3909 6.384C46.1429 6.992 46.5189 7.936 46.5189 9.216V14.184H47.9589V16.512Z" fill="currentColor"></path></svg></a><p>Your blueprint for a better internet.</p><ul class="social-icons"><li><a href="https://mozilla.social/@mdn" target="_blank" rel="me noopener noreferrer"><span class="icon icon-mastodon"></span><span class="visually-hidden">MDN on Mastodon</span></a></li><li><a href="https://twitter.com/mozdevnet" target="_blank" rel="noopener noreferrer"><span class="icon icon-twitter-x"></span><span class="visually-hidden">MDN on X (formerly Twitter)</span></a></li><li><a href="https://github.com/mdn/" target="_blank" rel="noopener noreferrer"><span class="icon icon-github-mark-small"></span><span class="visually-hidden">MDN on GitHub</span></a></li><li><a href="/en-US/blog/rss.xml" target="_blank"><span class="icon icon-feed"></span><span class="visually-hidden">MDN Blog RSS Feed</span></a></li></ul></div><div class="page-footer-nav-col-1"><h2 class="footer-nav-heading">MDN</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a href="/en-US/about">About</a></li><li class="footer-nav-item"><a href="/en-US/blog/">Blog</a></li><li class="footer-nav-item"><a href="https://www.mozilla.org/en-US/careers/listings/?team=ProdOps" target="_blank" rel="noopener noreferrer">Careers</a></li><li class="footer-nav-item"><a href="/en-US/advertising">Advertise with us</a></li></ul></div><div class="page-footer-nav-col-2"><h2 class="footer-nav-heading">Support</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="https://support.mozilla.org/products/mdn-plus">Product help</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/ko/docs/MDN/Community/Issues">Report an issue</a></li></ul></div><div class="page-footer-nav-col-3"><h2 class="footer-nav-heading">Our communities</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/en-US/community">MDN Community</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="https://discourse.mozilla.org/c/mdn/236" target="_blank" rel="noopener noreferrer">MDN Forum</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/discord" target="_blank" rel="noopener noreferrer">MDN Chat</a></li></ul></div><div class="page-footer-nav-col-4"><h2 class="footer-nav-heading">Developers</h2><ul class="footer-nav-list"><li class="footer-nav-item"><a class="footer-nav-link" href="/ko/docs/Web">Web Technologies</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/ko/docs/Learn">Learn Web Development</a></li><li class="footer-nav-item"><a class="footer-nav-link" href="/ko/plus">MDN Plus</a></li><li class="footer-nav-item"><a href="https://hacks.mozilla.org/" target="_blank" rel="noopener noreferrer">Hacks Blog</a></li></ul></div><div class="page-footer-moz"><a href="https://www.mozilla.org/" class="footer-moz-logo-link" target="_blank" rel="noopener noreferrer"><svg width="112" height="32" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="mozilla-footer-logo-svg">Mozilla logo</title><path d="M41.753 14.218c-2.048 0-3.324 1.522-3.324 4.157 0 2.423 1.119 4.286 3.29 4.286 2.082 0 3.447-1.678 3.447-4.347 0-2.826-1.522-4.096-3.413-4.096Zm54.89 7.044c0 .901.437 1.618 1.645 1.618 1.427 0 2.949-1.024 3.044-3.352-.649-.095-1.365-.185-2.02-.185-1.426-.005-2.668.397-2.668 1.92Z" fill="currentColor"></path><path d="M0 0v32h111.908V0H0Zm32.56 25.426h-5.87v-7.884c0-2.423-.806-3.352-2.39-3.352-1.924 0-2.702 1.365-2.702 3.324v4.868h1.864v3.044h-5.864v-7.884c0-2.423-.806-3.352-2.39-3.352-1.924 0-2.702 1.365-2.702 3.324v4.868h2.669v3.044H6.642v-3.044h1.863v-7.918H6.642V11.42h5.864v2.11c.839-1.489 2.3-2.39 4.252-2.39 2.02 0 3.878.963 4.566 3.01.778-1.862 2.361-3.01 4.566-3.01 2.512 0 4.812 1.522 4.812 4.84v6.402h1.863v3.044h-.005Zm9.036.307c-4.314 0-7.296-2.635-7.296-7.106 0-4.096 2.484-7.481 7.514-7.481s7.481 3.38 7.481 7.29c0 4.472-3.228 7.297-7.699 7.297Zm22.578-.307H51.942l-.403-2.11 7.7-8.846h-4.376l-.621 2.17-2.888-.313.498-4.907h12.294l.313 2.11-7.767 8.852h4.533l.654-2.172 3.167.308-.872 4.908Zm7.99 0h-4.191v-5.03h4.19v5.03Zm0-8.976h-4.191v-5.03h4.19v5.03Zm2.618 8.976 6.054-21.358h3.945l-6.054 21.358h-3.945Zm8.136 0 6.048-21.358h3.945l-6.054 21.358h-3.939Zm21.486.307c-1.863 0-2.887-1.085-3.072-2.792-.805 1.427-2.232 2.792-4.498 2.792-2.02 0-4.314-1.085-4.314-4.006 0-3.447 3.323-4.253 6.518-4.253.778 0 1.584.034 2.3.124v-.465c0-1.427-.034-3.133-2.3-3.133-.84 0-1.488.061-2.143.402l-.453 1.578-3.195-.34.549-3.224c2.45-.996 3.692-1.27 5.992-1.27 3.01 0 5.556 1.55 5.556 4.75v6.083c0 .805.314 1.085.963 1.085.184 0 .375-.034.587-.095l.034 2.11a5.432 5.432 0 0 1-2.524.654Z" fill="currentColor"></path></svg></a><ul class="footer-moz-list"><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Website Privacy Notice</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/privacy/websites/#cookies" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Cookies</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/legal/terms/mozilla" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Legal</a></li><li class="footer-moz-item"><a href="https://www.mozilla.org/about/governance/policies/participation/" class="footer-moz-link" target="_blank" rel="noopener noreferrer">Community Participation Guidelines</a></li></ul></div><div class="page-footer-legal"><p id="license" class="page-footer-legal-text">Visit<!-- --> <a href="https://www.mozilla.org" target="_blank" rel="noopener noreferrer">Mozilla Corporation’s</a> <!-- -->not-for-profit parent, the<!-- --> <a target="_blank" rel="noopener noreferrer" href="https://foundation.mozilla.org/">Mozilla Foundation</a>.<br/>Portions of this content are ©1998–<!-- -->2024<!-- --> by individual mozilla.org contributors. Content available under<!-- --> <a href="/ko/docs/MDN/Writing_guidelines/Attrib_copyright_license">a Creative Commons license</a>.</p></div></div></footer></div><script type="application/json" id="hydration">{"url":"/ko/docs/Web/HTTP/CORS","doc":{"isMarkdown":true,"isTranslated":true,"isActive":true,"flaws":{},"title":"교차 출처 리소스 공유 (CORS)","mdn_url":"/ko/docs/Web/HTTP/CORS","locale":"ko","native":"한국어","browserCompat":["http.headers.Access-Control-Allow-Origin"],"baseline":{"baseline":"high","baseline_high_date":"2018-01-29","baseline_low_date":"2015-07-29","support":{"chrome":"4","chrome_android":"18","edge":"12","firefox":"3.5","firefox_android":"4","safari":"4","safari_ios":"3.2"}},"sidebarHTML":"\n <ol>\n <li class=\"section\"><a href=\"/ko/docs/Web/HTTP\">HTTP</a></li>\n <li class=\"section no-link\">가이드</li>\n <li><a href=\"/ko/docs/Web/HTTP/Overview\">HTTP 개요</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Session\">전형적인 HTTP 세션</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Messages\">HTTP 메시지</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/MIME_types\">MIME 타입 (IANA 미디어 타입)</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Compression\">HTTP에서의 압축</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Caching\">HTTP 캐싱</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Authentication\">HTTP 인증</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Cookies\">HTTP 쿠키</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Redirections\">HTTP 리다이렉트</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Conditional_requests\">HTTP 조건부 요청</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Range_requests\">HTTP 범위 요청</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Content_negotiation\">콘텐츠 협상</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Connection_management_in_HTTP_1.x\">HTTP/1.x의 커넥션 관리</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Evolution_of_HTTP\">HTTP의 진화</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Protocol_upgrade_mechanism\">프로토콜 업그레이드 메커니즘</a></li>\n <li><a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling\">Proxy servers and tunneling</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Client_hints\">Client hints(클라이언트 힌트)</a></li>\n <li class=\"toggle\">\n <details open=\"\">\n <summary>HTTP 보안</summary>\n <ol>\n <li><a href=\"/ko/docs/Web/Security/Practical_implementation_guides\">사이트 보안</a></li>\n <li><a href=\"/en-US/observatory\">HTTP Observatory</a></li>\n <li><a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/HTTP/Permissions_Policy\">Permissions Policy</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/CSP\">컨텐츠 보안 정책 (CSP)</a></li>\n <li><em><a href=\"/ko/docs/Web/HTTP/CORS\" aria-current=\"page\">교차 출처 리소스 공유 (CORS)</a></em></li>\n <li><a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy\">Cross-Origin Resource Policy (CORP)</a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Headers/Strict-Transport-Security\">Strict-Transport-Security</a></li>\n </ol>\n </details>\n </li>\n <li class=\"section no-link\">레퍼런스</li>\n <li class=\"toggle\">\n <details>\n <summary>HTTP 헤더</summary>\n <ol><li><a href=\"/ko/docs/Web/HTTP/Headers/Accept\"><code>Accept</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Accept-CH\"><code>Accept-CH</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Accept-Encoding\"><code>Accept-Encoding</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Accept-Language\"><code>Accept-Language</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Accept-Patch\"><code>Accept-Patch</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Accept-Post\"><code>Accept-Post</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Accept-Ranges\"><code>Accept-Ranges</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials\"><code>Access-Control-Allow-Credentials</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Headers\"><code>Access-Control-Allow-Headers</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Methods\"><code>Access-Control-Allow-Methods</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin\"><code>Access-Control-Allow-Origin</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Expose-Headers\"><code>Access-Control-Expose-Headers</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age\"><code>Access-Control-Max-Age</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers\"><code>Access-Control-Request-Headers</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Request-Method\"><code>Access-Control-Request-Method</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Age\"><code>Age</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Allow\"><code>Allow</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Alt-Svc\"><code>Alt-Svc</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Alt-Used\"><code>Alt-Used</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Attribution-Reporting-Eligible\"><code>Attribution-Reporting-Eligible</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Attribution-Reporting-Register-Source\"><code>Attribution-Reporting-Register-Source</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Attribution-Reporting-Register-Trigger\"><code>Attribution-Reporting-Register-Trigger</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Authorization\"><code>Authorization</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Cache-Control\"><code>Cache-Control</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Clear-Site-Data\"><code>Clear-Site-Data</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Connection\"><code>Connection</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Digest\"><code>Content-Digest</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Disposition\"><code>Content-Disposition</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-DPR\"><code>Content-DPR</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Encoding\"><code>Content-Encoding</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Language\"><code>Content-Language</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Length\"><code>Content-Length</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Location\"><code>Content-Location</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Range\"><code>Content-Range</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy\"><code>Content-Security-Policy</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only\"><code>Content-Security-Policy-Report-Only</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Type\"><code>Content-Type</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Cookie\"><code>Cookie</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Critical-CH\"><code>Critical-CH</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy\"><code>Cross-Origin-Embedder-Policy</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy\"><code>Cross-Origin-Opener-Policy</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy\"><code>Cross-Origin-Resource-Policy</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Date\"><code>Date</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Device-Memory\"><code>Device-Memory</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/DNT\"><code>DNT</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Downlink\"><code>Downlink</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/DPR\"><code>DPR</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Early-Data\"><code>Early-Data</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/ECT\"><code>ECT</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/ETag\"><code>ETag</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Expect\"><code>Expect</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Expect-CT\"><code>Expect-CT</code></a><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Expires\"><code>Expires</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Forwarded\"><code>Forwarded</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/From\"><code>From</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Host\"><code>Host</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/If-Match\"><code>If-Match</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/If-Modified-Since\"><code>If-Modified-Since</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/If-None-Match\"><code>If-None-Match</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/If-Range\"><code>If-Range</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/If-Unmodified-Since\"><code>If-Unmodified-Since</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Keep-Alive\"><code>Keep-Alive</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Last-Modified\"><code>Last-Modified</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Link\"><code>Link</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Location\"><code>Location</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Max-Forwards\"><code>Max-Forwards</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/NEL\"><code>NEL</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/No-Vary-Search\"><code>No-Vary-Search</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Observe-Browsing-Topics\"><code>Observe-Browsing-Topics</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Origin\"><code>Origin</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Origin-Agent-Cluster\"><code>Origin-Agent-Cluster</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy\"><code>Permissions-Policy</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Pragma\"><code>Pragma</code></a><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Priority\"><code>Priority</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Proxy-Authenticate\"><code>Proxy-Authenticate</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Proxy-Authorization\"><code>Proxy-Authorization</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Range\"><code>Range</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Referer\"><code>Referer</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Referrer-Policy\"><code>Referrer-Policy</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Refresh\"><code>Refresh</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Report-To\"><code>Report-To</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Reporting-Endpoints\"><code>Reporting-Endpoints</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Repr-Digest\"><code>Repr-Digest</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Retry-After\"><code>Retry-After</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/RTT\"><code>RTT</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Save-Data\"><code>Save-Data</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-Browsing-Topics\"><code>Sec-Browsing-Topics</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-Prefers-Color-Scheme\"><code>Sec-CH-Prefers-Color-Scheme</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-Prefers-Reduced-Motion\"><code>Sec-CH-Prefers-Reduced-Motion</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-Prefers-Reduced-Transparency\"><code>Sec-CH-Prefers-Reduced-Transparency</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA\"><code>Sec-CH-UA</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Arch\"><code>Sec-CH-UA-Arch</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Bitness\"><code>Sec-CH-UA-Bitness</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Full-Version\"><code>Sec-CH-UA-Full-Version</code></a><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Full-Version-List\"><code>Sec-CH-UA-Full-Version-List</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Mobile\"><code>Sec-CH-UA-Mobile</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Model\"><code>Sec-CH-UA-Model</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Platform\"><code>Sec-CH-UA-Platform</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-CH-UA-Platform-Version\"><code>Sec-CH-UA-Platform-Version</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-Fetch-Dest\"><code>Sec-Fetch-Dest</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-Fetch-Mode\"><code>Sec-Fetch-Mode</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-Fetch-Site\"><code>Sec-Fetch-Site</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-Fetch-User\"><code>Sec-Fetch-User</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-GPC\"><code>Sec-GPC</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-Purpose\"><code>Sec-Purpose</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Accept\"><code>Sec-WebSocket-Accept</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Extensions\"><code>Sec-WebSocket-Extensions</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Key\"><code>Sec-WebSocket-Key</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Protocol\"><code>Sec-WebSocket-Protocol</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Sec-WebSocket-Version\"><code>Sec-WebSocket-Version</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Server\"><code>Server</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Server-Timing\"><code>Server-Timing</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Service-Worker-Navigation-Preload\"><code>Service-Worker-Navigation-Preload</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Set-Cookie\"><code>Set-Cookie</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Set-Login\"><code>Set-Login</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/SourceMap\"><code>SourceMap</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Speculation-Rules\"><code>Speculation-Rules</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Strict-Transport-Security\"><code>Strict-Transport-Security</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Supports-Loading-Mode\"><code>Supports-Loading-Mode</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/TE\"><code>TE</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Timing-Allow-Origin\"><code>Timing-Allow-Origin</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Tk\"><code>Tk</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Trailer\"><code>Trailer</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Transfer-Encoding\"><code>Transfer-Encoding</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Upgrade\"><code>Upgrade</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Upgrade-Insecure-Requests\"><code>Upgrade-Insecure-Requests</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/User-Agent\"><code>User-Agent</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Vary\"><code>Vary</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Via\"><code>Via</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Viewport-Width\"><code>Viewport-Width</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Want-Content-Digest\"><code>Want-Content-Digest</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Want-Repr-Digest\"><code>Want-Repr-Digest</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Warning\"><code>Warning</code></a><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Width\"><code>Width</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/WWW-Authenticate\"><code>WWW-Authenticate</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/X-Content-Type-Options\"><code>X-Content-Type-Options</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control\"><code>X-DNS-Prefetch-Control</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/X-Forwarded-For\"><code>X-Forwarded-For</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/X-Forwarded-Host\"><code>X-Forwarded-Host</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/X-Forwarded-Proto\"><code>X-Forwarded-Proto</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/X-Frame-Options\"><code>X-Frame-Options</code></a><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/X-XSS-Protection\"><code>X-XSS-Protection</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li></ol>\n </details>\n </li>\n <li class=\"toggle\">\n <details>\n <summary>HTTP 요청 메소드</summary>\n <ol><li><a href=\"/ko/docs/Web/HTTP/Methods/CONNECT\"><code>CONNECT</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/DELETE\"><code>DELETE</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/GET\"><code>GET</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/HEAD\"><code>HEAD</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/OPTIONS\"><code>OPTIONS</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/PATCH\"><code>PATCH</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/POST\"><code>POST</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/PUT\"><code>PUT</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Methods/TRACE\"><code>TRACE</code></a></li></ol>\n </details>\n </li>\n <li class=\"toggle\">\n <details>\n <summary>HTTP 응답 상태 코드</summary>\n <ol><li><a href=\"/ko/docs/Web/HTTP/Status/100\"><code>100 Continue</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/101\"><code>101 Switching Protocols</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/102\"><code>102 Processing</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/103\"><code>103 Early Hints</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/200\"><code>200 OK</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/201\"><code>201 Created</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/202\"><code>202 Accepted</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/203\"><code>203 Non-Authoritative Information</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/204\"><code>204 No Content</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/205\"><code>205 Reset Content</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/206\"><code>206 Partial Content</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/207\"><code>207 Multi-Status</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/208\"><code>208 Already Reported</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/226\"><code>226 IM Used</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/300\"><code>300 Multiple Choices</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/301\"><code>301 Moved Permanently</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/302\"><code>302 Found</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/303\"><code>303 See Other</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/304\"><code>304 Not Modified</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/307\"><code>307 Temporary Redirect</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/308\"><code>308 Permanent Redirect</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/400\"><code>400 Bad Request</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/401\"><code>401 Unauthorized</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/402\"><code>402 Payment Required</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/403\"><code>403 Forbidden</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/404\"><code>404 Not Found</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/405\"><code>405 Method Not Allowed</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/406\"><code>406 Not Acceptable</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/407\"><code>407 Proxy Authentication Required</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/408\"><code>408 Request Timeout</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/409\"><code>409 Conflict</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/410\"><code>410 Gone</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/411\"><code>411 Length Required</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/412\"><code>412 Precondition Failed</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/413\"><code>413 Content Too Large</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/414\"><code>414 URI Too Long</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/415\"><code>415 Unsupported Media Type</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/416\"><code>416 Range Not Satisfiable</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/417\"><code>417 Expectation Failed</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/418\"><code>418 I'm a teapot</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/421\"><code>421 Misdirected Request</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/422\"><code>422 Unprocessable Content</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/423\"><code>423 Locked</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/424\"><code>424 Failed Dependency</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/425\"><code>425 Too Early</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/426\"><code>426 Upgrade Required</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/428\"><code>428 Precondition Required</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/429\"><code>429 Too Many Requests</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/431\"><code>431 Request Header Fields Too Large</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/451\"><code>451 Unavailable For Legal Reasons</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/500\"><code>500 Internal Server Error</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/501\"><code>501 Not Implemented</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/502\"><code>502 Bad Gateway</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/503\"><code>503 Service Unavailable</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/504\"><code>504 Gateway Timeout</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/505\"><code>505 HTTP Version Not Supported</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/506\"><code>506 Variant Also Negotiates</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/507\"><code>507 Insufficient Storage</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/508\"><code>508 Loop Detected</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/510\"><code>510 Not Extended</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Status/511\"><code>511 Network Authentication Required</code></a></li></ol>\n </details>\n </li>\n <li class=\"toggle\">\n <details>\n <summary>CSP 지시문</summary>\n <ol><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/base-uri\"><code>CSP: base-uri</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/block-all-mixed-content\"><code>CSP: block-all-mixed-content</code></a><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/child-src\"><code>CSP: child-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src\"><code>CSP: connect-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/default-src\"><code>CSP: default-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/fenced-frame-src\"><code>CSP: fenced-frame-src</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/font-src\"><code>CSP: font-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/form-action\"><code>CSP: form-action</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors\"><code>CSP: frame-ancestors</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/frame-src\"><code>CSP: frame-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/img-src\"><code>CSP: img-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/manifest-src\"><code>CSP: manifest-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/media-src\"><code>CSP: media-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/object-src\"><code>CSP: object-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/prefetch-src\"><code>CSP: prefetch-src</code></a><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/report-to\"><code>report-to</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/report-uri\"><code>CSP: report-uri</code></a><abbr class=\"icon icon-deprecated\" title=\"지원이 중단되었습니다. 새로운 웹사이트에서 사용하지 마세요.\">\n <span class=\"visually-hidden\">지원이 중단되었습니다</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\"><code>CSP: require-trusted-types-for</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/sandbox\"><code>CSP: sandbox</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/script-src\"><code>CSP: script-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/script-src-attr\"><code>CSP: script-src-attr</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/script-src-elem\"><code>CSP: script-src-elem</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/style-src\"><code>CSP: style-src</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/style-src-attr\"><code>CSP: style-src-attr</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/style-src-elem\"><code>CSP: style-src-elem</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/trusted-types\"><code>CSP: trusted-types</code></a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests\"><code>CSP: upgrade-insecure-requests</code></a></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Security-Policy/worker-src\"><code>CSP: worker-src</code></a></li></ol>\n </details>\n </li>\n <li class=\"toggle\">\n <details>\n <summary>CORS 에러</summary>\n <ol><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSDisabled\">Reason: CORS disabled</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin\">Reason: CORS header 'Access-Control-Allow-Origin' does not match 'xyz'</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin\">Reason: CORS header 'Access-Control-Allow-Origin' missing</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded\">Reason: CORS header 'Origin' cannot be added</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed\">Reason: CORS preflight channel did not succeed</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSDidNotSucceed\">Reason: CORS request did not succeed</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed\">Reason: CORS request external redirect not allowed</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp\">Reason: CORS request not HTTP</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials\">Reason: Credential is not supported if the CORS header 'Access-Control-Allow-Origin' is '*'</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSMethodNotFound\">Reason: Did not find method in CORS header 'Access-Control-Allow-Methods'</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSMIssingAllowCredentials\">Reason: expected 'true' in CORS header 'Access-Control-Allow-Credentials'</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowHeader\">Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Headers'</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowMethod\">Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Methods'</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSMissingAllowHeaderFromPreflight\">Reason: missing token 'xyz' in CORS header 'Access-Control-Allow-Headers' from CORS preflight channel</a></li><li><a href=\"/ko/docs/Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed\">Reason: Multiple CORS header 'Access-Control-Allow-Origin' not allowed</a></li></ol>\n </details>\n </li>\n <li class=\"toggle\">\n <details>\n <summary>Permissions-Policy 지시문</summary>\n <ol><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/accelerometer\">Permissions-Policy: accelerometer</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/ambient-light-sensor\">Permissions-Policy: ambient-light-sensor</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/attribution-reporting\">Permissions-Policy: attribution-reporting</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/autoplay\">Permissions-Policy: autoplay</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/bluetooth\">Permissions-Policy: bluetooth</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/browsing-topics\">Permissions-Policy: browsing-topics</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr><abbr class=\"icon icon-nonstandard\" title=\"비표준. 사용하기전에 다른 브라우저에서도 사용 가능한지 확인 해주세요.\">\n <span class=\"visually-hidden\">비표준</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/camera\">Permissions-Policy: camera</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/compute-pressure\">Permissions-Policy: compute-pressure</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/display-capture\">Permissions-Policy: display-capture</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/document-domain\">Permissions-Policy: document-domain</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/encrypted-media\">Permissions-Policy: encrypted-media</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/fullscreen\">Permissions-Policy: fullscreen</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/gamepad\">Permissions-Policy: gamepad</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/geolocation\">Permissions-Policy: geolocation</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/gyroscope\">Permissions-Policy: gyroscope</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/hid\">Permissions-Policy: hid</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/identity-credentials-get\">Permissions-Policy: identity-credentials-get</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/idle-detection\">Permissions-Policy: idle-detection</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/local-fonts\">Permissions-Policy: local-fonts</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/magnetometer\">Permissions-Policy: magnetometer</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/microphone\">Permissions-Policy: microphone</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/midi\">Permissions-Policy: midi</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/otp-credentials\">Permissions-Policy: otp-credentials</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/payment\">Permissions-Policy: payment</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/picture-in-picture\">Permissions-Policy: picture-in-picture</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/publickey-credentials-create\">Permissions-Policy: publickey-credentials-create</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/publickey-credentials-get\">Permissions-Policy: publickey-credentials-get</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/screen-wake-lock\">Permissions-Policy: screen-wake-lock</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/serial\">Permissions-Policy: serial</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/speaker-selection\">Permissions-Policy: speaker-selection</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/storage-access\">Permissions-Policy: storage-access</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/usb\">Permissions-Policy: usb</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/web-share\">Permissions-Policy: web-share</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/window-management\">Permissions-Policy: window-management</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li><li><a href=\"/ko/docs/Web/HTTP/Headers/Permissions-Policy/xr-spatial-tracking\">Permissions-Policy: xr-spatial-tracking</a><abbr class=\"icon icon-experimental\" title=\"Experimental. 예상되는 동작은 향후 변경될 수 있습니다.\">\n <span class=\"visually-hidden\">Experimental</span>\n</abbr></li></ol>\n </details>\n </li>\n <li><a href=\"/ko/docs/Web/HTTP/Resources_and_specifications\">HTTP 리소스와 명세</a></li>\n </ol>\n","sidebarMacro":"HTTPSidebar","body":[{"type":"prose","value":{"id":null,"title":null,"isH3":false,"content":"<p><strong>교차 출처 리소스 공유</strong>(Cross-Origin Resource Sharing, <a href=\"/ko/docs/Glossary/CORS\">CORS</a>)는 브라우저가 자신의 출처가 아닌 다른 어떤 <a href=\"/ko/docs/Glossary/Origin\">출처</a>(도메인, 스킴 혹은 포트)로부터 자원을 로딩하는 것을 허용하도록 서버가 허가 해주는 <a href=\"/ko/docs/Glossary/HTTP\">HTTP</a> 헤더 기반 메커니즘입니다. 또한 CORS 는 교차 출처 리소스를 호스팅하는 서버가 실제 요청을 허가할 것인지 확인하기 위해 브라우저가 보내는 \"사전 요청(프리플라이트, Preflight)\" 메커니즘에 의존합니다. 이 사전 요청에서 브라우저는 실제 요청에서 사용할 HTTP 메서드와 헤더들에 대한 정보가 표시된 헤더에 담아 보냅니다.</p>\n<p>교차 출처 요청의 예시: <code>https://domain-a.com</code> 에서 제공되는 프론트엔드 JavaScript 코드가 <a href=\"/ko/docs/Web/API/Window/fetch\" title=\"fetch()\"><code>fetch()</code></a>를 사용하여 <code>https://domain-b.com/data.json</code> 에 요청하는 경우.</p>\n<p>보안 상의 이유로 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한합니다. 예를 들어, <code>fetch()</code> 와 <a href=\"/ko/docs/Web/API/XMLHttpRequest\"><code>XMLHttpRequest</code></a> 는 <a href=\"/ko/docs/Web/Security/Same-origin_policy\">동일 출처 정책</a>을 따릅니다. 이는 이러한 API를 사용하는 웹 애플리케이션이 애플리케이션이 로드된 동일한 출처에서만 리소스를 요청할 수 있으며, 다른 출처의 응답에 올바른 CORS 헤더가 포함되어 있지 않는 한 그렇지 못하다는 것을 의미합니다.</p>\n<p>\n <img src=\"https://mdn.github.io/shared-assets/images/diagrams/http/cors/fetching-page-cors.svg\" alt=\"Diagrammatic representation of CORS mechanism\" loading=\"lazy\">\n</p>\n<p>CORS 메커니즘은 브라우저와 서버 간의 안전한 교차 출처 요청 및 데이터 전송을 지원합니다. 브라우저는 교차 출처 HTTP 요청의 위험을 완화하기 위해 <code>fetch()</code> 나 <code>XMLHttpRequest</code> 같은 API에서 CORS를 사용합니다.</p>"}},{"type":"prose","value":{"id":"어떤_요청이_cors를_사용합니까","title":"어떤 요청이 CORS를 사용합니까?","isH3":false,"content":"<p>이 <a href=\"https://fetch.spec.whatwg.org/#http-cors-protocol\" class=\"external\" target=\"_blank\">교차 출처 공유 표준</a>은 다음과 같은 경우에 교차 출처 HTTP 요청을 가능하게 합니다.</p>\n<ul>\n <li>위에서 언급한 <code>fetch()</code> 또는 <code>XMLHttpRequest</code>의 호출.</li>\n <li>웹 폰트(CSS 내 <code>@font-face</code>에서 교차 도메인 폰트 사용 시), <a href=\"https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements\" class=\"external\" target=\"_blank\">서버가 교차 출처로만 로드될 수 있고 허가된 웹사이트에서만 사용할 수 있는 TrueType 폰트를 배포할 수 있게 합니다.</a></li>\n <li><a href=\"/ko/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL\">WebGL 텍스쳐</a>.</li>\n <li><a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage\"><code>drawImage()</code></a>를 사용해 캔버스에 그린 이미지/비디오 프레임.</li>\n <li><a href=\"/en-US/docs/Web/CSS/CSS_shapes/Shapes_from_images\" class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\">이미지로부터 추출하는 CSS Shapes.</a></li>\n</ul>\n<p>교차 출처 리소스 공유에 대한 일반적인 글이며 필요한 HTTP 헤더에 대한 논의도 포함하고 있습니다.</p>"}},{"type":"prose","value":{"id":"기능적_개요","title":"기능적 개요","isH3":false,"content":"<p>교차 출처 리소스 공유 표준은 서버가 웹 브라우저에서 해당 정보를 읽는 것이 허용된 출처를 설명할 수 있도록 새로운 <a href=\"/ko/docs/Web/HTTP/Headers\">HTTP 헤더</a>를 추가함으로써 동작합니다. 추가적으로, 서버 데이터에 부수 효과(side effect)를 일으킬 수 있는 HTTP 요청 방법(특히 <a href=\"/ko/docs/Web/HTTP/Methods/GET\"><code>GET</code></a> 이외의 HTTP 메서드 또는 특정 <a href=\"/ko/docs/Web/HTTP/MIME_types\">MIME 타입</a>을 사용하는 <a href=\"/ko/docs/Web/HTTP/Methods/POST\"><code>POST</code></a>)에 대해서, CORS 명세는 브라우저가 HTTP <a href=\"/ko/docs/Web/HTTP/Methods/OPTIONS\"><code>OPTIONS</code></a> 메서드로 서버에서 지원하는 메서드들을 요구하는 요청을 \"사전 전달(프리플라이트)\"한 다음, 서버로부터 \"승인\"을 받은 후 실제 요청을 보내도록 지시합니다. 또한 서버는 요청과 함께 \"자격 증명\"(예를 들어 <a href=\"/ko/docs/Web/HTTP/Cookies\">쿠키</a> 및 <a href=\"/ko/docs/Web/HTTP/Authentication\">HTTP 인증</a>)을 전송해야 하는지 여부를 클라이언트에게 알릴 수 있습니다.</p>\n<p>CORS 실패는 오류를 발생시키지만, 보안상의 이유로 오류에 대한 세부 사항은 JavaScript에 제공되지 않습니다. 코드가 알 수 있는 것은 오류가 발생했다는 것뿐입니다. 무엇이 구체적으로 잘못되었는지를 확인하려면 브라우저의 콘솔에서 세부 사항을 살펴봐야 합니다.</p>\n<p>다음 섹션에서는 다양한 시나리오를 논의하고, 사용되는 HTTP 헤더에 대한 세부 사항을 제공합니다.</p>"}},{"type":"prose","value":{"id":"접근_제어_시나리오_예제","title":"접근 제어 시나리오 예제","isH3":false,"content":"<p>교차 출처 리소스 공유가 동작하는 방식을 보여주는 세 가지 시나리오를 제시하겠습니다. 모든 예제는 지원하는 브라우저에서 교차 출처 요청을 생성할 수 있는 <a href=\"/ko/docs/Web/API/Window/fetch\" title=\"fetch()\"><code>fetch()</code></a>를 사용합니다.</p>"}},{"type":"prose","value":{"id":"단순_요청simple_requests","title":"단순 요청(Simple requests)","isH3":true,"content":"<p>일부 요청은 CORS 사전 요청을 트리거하지 않습니다. 이러한 요청은 구식 <a href=\"https://www.w3.org/TR/2014/REC-cors-20140116/#terminology\" class=\"external\" target=\"_blank\">CORS 사양</a>에서는 \"단순 요청\"이라고 불렸으나, 현재 CORS 정의하는 <a href=\"https://fetch.spec.whatwg.org/\" class=\"external\" target=\"_blank\">Fetch 사양</a>에서는 이 용어를 사용하지 않습니다.</p>\n<p>이러한 동기는 HTML 4.0의 <a href=\"/ko/docs/Web/HTML/Element/form\"><code><form></code></a> 요소(교차 사이트 <a href=\"/ko/docs/Web/API/Window/fetch\" title=\"fetch()\"><code>fetch()</code></a> 와 <a href=\"/ko/docs/Web/API/XMLHttpRequest\"><code>XMLHttpRequest</code></a> 보다 이전에 존재한 요소)가 어떤 출처로든 단순 요청을 제출할 수 있다는 것입니다. 따라서 서버 쓰기를 수행하는 모든 사람은 이미 <a href=\"/ko/docs/Glossary/CSRF\">사이트 간 요청 위조(Cross Site Request Forgery, CSRF)</a>로부터 보호하고 있어야 합니다. 이러한 가정 하에서, CSRF 의 위협은 폼 제출의 위협과 다르지 않기 때문에 서버는 폼 제출처럼 보이는 요청을 받기 위해 사전 요청에 응답하는 옵트-인(opt-in)을 할 필요가 없습니다. 그러나 서버는 여전히 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin\"><code>Access-Control-Allow-Origin</code></a> 을 사용하여 스크립트와 응답을 공유하도록 옵트-인 해야 합니다.</p>\n<p>단순 요청은 다음 조건을 모두 충족하는 요청입니다.</p>\n<ul>\n <li>\n <p>다음 중 하나의 메서드</p>\n <ul>\n <li><a href=\"/ko/docs/Web/HTTP/Methods/GET\"><code>GET</code></a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Methods/HEAD\"><code>HEAD</code></a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Methods/POST\"><code>POST</code></a></li>\n </ul>\n </li>\n <li>\n <p>유저 에이전트가 자동으로 설정한 헤더(예를들어, <a href=\"/ko/docs/Web/HTTP/Headers/Connection\"><code>Connection</code></a>, <a href=\"/ko/docs/Web/HTTP/Headers/User-Agent\"><code>User-Agent</code></a>, <a href=\"https://fetch.spec.whatwg.org/#forbidden-header-name\" class=\"external\" target=\"_blank\">Fetch 명세에서 \"forbidden header name\"으로 정의한 헤더</a>) 외에, 수동으로 설정할 수 있는 헤더는 오직 <a href=\"https://fetch.spec.whatwg.org/#cors-safelisted-request-header\" class=\"external\" target=\"_blank\">Fetch 명세에서 \"CORS-safelisted request-header\"로 정의한 헤더</a> 뿐입니다.</p>\n <ul>\n <li><a href=\"/ko/docs/Web/HTTP/Headers/Accept\"><code>Accept</code></a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Headers/Accept-Language\"><code>Accept-Language</code></a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Language\"><code>Content-Language</code></a></li>\n <li><a href=\"/ko/docs/Web/HTTP/Headers/Content-Type\"><code>Content-Type</code></a> (아래의 추가 요구 사항에 유의하세요.)</li>\n <li><a href=\"/ko/docs/Web/HTTP/Headers/Range\"><code>Range</code></a> (오직 <a href=\"https://fetch.spec.whatwg.org/#simple-range-header-value\" class=\"external\" target=\"_blank\">단순 범위 헤더 값</a>, 예를 들어 <code>bytes=256-</code> 혹은 <code>bytes=127-255</code>)</li>\n </ul>\n </li>\n <li>\n <p><a href=\"/ko/docs/Web/HTTP/Headers/Content-Type\"><code>Content-Type</code></a> 헤더에 지정된 <a href=\"/ko/docs/Glossary/MIME_type\">미디어 타입</a>에 대해 허용된 타입/서브타입 조합은 다음과 같습니다.</p>\n <ul>\n <li><code>application/x-www-form-urlencoded</code></li>\n <li><code>multipart/form-data</code></li>\n <li><code>text/plain</code></li>\n </ul>\n </li>\n <li>\n <p>요청이 <a href=\"/ko/docs/Web/API/XMLHttpRequest\"><code>XMLHttpRequest</code></a> 객체를 사용하여 이루어진 경우, 요청에 사용된 <a href=\"/ko/docs/Web/API/XMLHttpRequest/upload\"><code>XMLHttpRequest.upload</code></a> 속성에 의해 반환된 객체에 이벤트 리스너가 등록되지 않습니다. 즉, <a href=\"/ko/docs/Web/API/XMLHttpRequest\"><code>XMLHttpRequest</code></a> 인스턴스 <code>xhr</code>이 있다면 업로드를 모니터링하기 위한 이벤트 리스너를 추가하는 <code>xhr.upload.addEventListener()</code>를 호출하는 코드가 존재하지 않는다는 것입니다.</p>\n </li>\n <li>\n <p>요청에 <a href=\"/ko/docs/Web/API/ReadableStream\"><code>ReadableStream</code></a> 객체가 사용되지 않습니다.</p>\n </li>\n</ul>\n<div class=\"notecard note\">\n <p><strong>참고:</strong> WebKit Nightly 와 Safari Technology Preview 는 Accept, Accept-Language, Content-Language 헤더에 허용되는 값에 추가적인 제약을 가합니다. 이러한 헤더 중 하나라도 \"비표준\" 값을 갖는 경우, WebKit/Safari 는 해당 요청을 \"단순 요청\"으로 간주하지 않습니다. WebKit/Safari 에서 어떤 값을 \"비표준\"으로 간주하는지는 다음의 WebKit 버그 외에는 문서화되어 있지 않습니다:</p>\n <ul>\n <li><a href=\"https://bugs.webkit.org/show_bug.cgi?id=165178\" class=\"external\" target=\"_blank\">Require preflight for non-standard CORS-safelisted request headers Accept, Accept-Language, and Content-Language</a></li>\n <li><a href=\"https://bugs.webkit.org/show_bug.cgi?id=165566\" class=\"external\" target=\"_blank\">Allow commas in Accept, Accept-Language, and Content-Language request headers for simple CORS</a></li>\n <li><a href=\"https://bugs.webkit.org/show_bug.cgi?id=166363\" class=\"external\" target=\"_blank\">Switch to a blacklist model for restricted Accept headers in simple CORS requests</a></li>\n </ul>\n <p>이 부분은 CORS 명세가 아니기 때문에 다른 브라우저에는 이러한 추가 제한 사항이 없습니다.</p>\n</div>\n<p>예를 들어 <code>https://foo.example</code>의 웹 콘텐츠가 <code>https://bar.other</code> 도메인에서 JSON 콘텐츠를 가져오고자 한다고 가정해봅시다. 이러한 종류의 코드는 <code>foo.example</code>에 배포된 JavaScript에서 사용될 수 있습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>const fetchPromise = fetch(\"https://bar.other\");\n\nfetchPromise\n .then((response) => response.json())\n .then((data) => {\n console.log(data);\n });\n</code></pre></div>\n<p>이 작업은 클라이언트와 서버 간의 간단한 교환을 수행하며, 권한 처리를 위해 CORS 헤더를 사용합니다.</p>\n<p>\n <img src=\"https://mdn.github.io/shared-assets/images/diagrams/http/cors/simple-request.svg\" alt=\"Diagram of simple CORS GET request\" loading=\"lazy\">\n</p>\n<p>이 경우 브라우저가 서버로 보내는 내용을 살펴보겠습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>GET /resources/public-data/ HTTP/1.1\nHost: bar.other\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\nAccept-Language: en-us,en;q=0.5\nAccept-Encoding: gzip,deflate\nConnection: keep-alive\nOrigin: https://foo.example\n</code></pre></div>\n<p>주목할 요청 헤더는 <a href=\"/ko/docs/Web/HTTP/Headers/Origin\"><code>Origin</code></a> 으로, 요청이 <code>https://foo.example</code> 에서 왔음을 나타냅니다.</p>\n<p>이제 서버가 어떻게 응답하는지 살펴보겠습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>HTTP/1.1 200 OK\nDate: Mon, 01 Dec 2008 00:23:53 GMT\nServer: Apache/2\nAccess-Control-Allow-Origin: *\nKeep-Alive: timeout=2, max=100\nConnection: Keep-Alive\nTransfer-Encoding: chunked\nContent-Type: application/xml\n\n[…XML Data…]\n</code></pre></div>\n<p>서버는 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin\"><code>Access-Control-Allow-Origin</code></a> 헤더에 <strong>모든</strong> 출처에서 해당 리소스에 접근할 수 있음을 의미하는 <code>Access-Control-Allow-Origin: *</code> 을 반환합니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Origin: *\n</code></pre></div>\n<p>이 <a href=\"/ko/docs/Web/HTTP/Headers/Origin\"><code>Origin</code></a> 및 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin\"><code>Access-Control-Allow-Origin</code></a> 헤더 패턴은 접근 제어 프로토콜의 가장 간단한 사용법입니다. 만약 <code>https://bar.other</code> 의 리소스 소유자가 해당 리소스의 접근을 오직 <code>https://foo.example</code> 출처에서 오는 요청(즉, <code>https://foo.example</code> 이외의 도메인에서는 교차 출처 방식으로 해당 리소스에 접근할 수 없음)으로만 제한하길 원한다면 다음과 같이 응답을 보낼 것입니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Origin: https://foo.example\n</code></pre></div>\n<div class=\"notecard note\">\n <p><strong>참고:</strong> <a href=\"#requests_with_credentials\">자격 증명</a>이 포함된 요청에 응답할 때, 서버는 Access-Control-Allow-Origin 헤더의 값으로 \"*\" 와일드카드를 지정하는 대신 특정 출처를 <strong>반드시</strong> 지정해야 합니다.</p>\n</div>"}},{"type":"prose","value":{"id":"사전_요청preflighted_requests","title":"사전 요청(Preflighted requests)","isH3":true,"content":"<p><a href=\"#simple_requests\">단순 요청</a>과 달리 \"사전 전송(preflighted)\" 요청의 경우 실제 요청을 보내는 것이 안전한지 판단하기 위해 브라우저가 먼저 <a href=\"/ko/docs/Web/HTTP/Methods/OPTIONS\"><code>OPTIONS</code></a> 메서드를 사용해 다른 출처의 리소스에 HTTP 요청을 보냅니다. 이러한 교차 출처 요청은 사용자 데이터에 영향을 미칠 수 있기 때문에 사전에 전송됩니다.</p>\n<p>다음은 사전 요청이 필요한 요청의 예시입니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>const fetchPromise = fetch(\"https://bar.other/doc\", {\n method: \"POST\",\n mode: \"cors\",\n headers: {\n \"Content-Type\": \"text/xml\",\n \"X-PINGOTHER\": \"pingpong\",\n },\n body: \"<person><name>Arun</name></person>\",\n});\n\nfetchPromise.then((response) => {\n console.log(response.status);\n});\n</code></pre></div>\n<p>위 예제는 <code>POST</code> 요청과 함께 보낼 XML 바디를 만듭니다. 또한, 비표준 HTTP <code>X-PINGOTHER</code> 요청 헤더가 설정됩니다. 이러한 헤더는 HTTP/1.1의 일부가 아니지만 일반적으로 웹 애플리케이션에 유용합니다. 요청이 <code>Content-Type</code> 헤더에 <code>text/xml</code> 을 사용하고, 사용자 지정 헤더가 설정되어 있기 때문에 이 요청은 사전 요청됩니다.</p>\n<p>\n <img src=\"https://mdn.github.io/shared-assets/images/diagrams/http/cors/preflight-correct.svg\" alt=\"Diagram of a request that is preflighted\" loading=\"lazy\">\n</p>\n<div class=\"notecard note\">\n <p><strong>참고:</strong> 아래 설명한 바와 같이 실제 <code>POST</code> 요청에는 <code>Access-Control-Request-*</code> 헤더가 포함되지 않습니다. 이 헤더들은 오직 <code>OPTIONS</code> 요청에만 필요합니다.</p>\n</div>\n<p>클라이언트와 서버 간의 전체 통신을 살펴보겠습니다. 첫 번째 통신은 사전 요청과 그에 대한 응답입니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>OPTIONS /doc HTTP/1.1\nHost: bar.other\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\nAccept-Language: en-us,en;q=0.5\nAccept-Encoding: gzip,deflate\nConnection: keep-alive\nOrigin: https://foo.example\nAccess-Control-Request-Method: POST\nAccess-Control-Request-Headers: content-type,x-pingother\n\nHTTP/1.1 204 No Content\nDate: Mon, 01 Dec 2008 01:15:39 GMT\nServer: Apache/2\nAccess-Control-Allow-Origin: https://foo.example\nAccess-Control-Allow-Methods: POST, GET, OPTIONS\nAccess-Control-Allow-Headers: X-PINGOTHER, Content-Type\nAccess-Control-Max-Age: 86400\nVary: Accept-Encoding, Origin\nKeep-Alive: timeout=2, max=100\nConnection: Keep-Alive\n</code></pre></div>\n<p>위 첫 번째 블록은 <a href=\"/ko/docs/Web/HTTP/Methods/OPTIONS\"><code>OPTIONS</code></a> 메서드를 사용한 사전 요청을 나타냅니다. 브라우저는 위 JavaScript 코드 스니펫(snippet)에서 사용한 요청 파라미터를 기준으로 사전 요청이 필요하다고 결정합니다. 이 사전 요청을 통해 서버는 실제 요청 파라미터로 요청을 보내는 것이 적절한지 응답할 수 있습니다. OPTIONS 는 서버로부터 추가 정보를 얻기 위해 사용되는 HTTP/1.1 메서드이며 리소스를 변경할 수 없는 <a href=\"/ko/docs/Glossary/Safe/HTTP\">안전한</a> 메서드입니다. OPTIONS 요청과 함께 두 개의 다른 요청 헤더가 전송됩니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Request-Method: POST\nAccess-Control-Request-Headers: content-type,x-pingother\n</code></pre></div>\n<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Request-Method\"><code>Access-Control-Request-Method</code></a> 헤더는 사전 요청의 일부로써 서버에게 실제 요청이 전송될 때 <code>POST</code> 요청 메서드를 사용할 것임을 알립니다. <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers\"><code>Access-Control-Request-Headers</code></a> 헤더는 실제 요청이 전송될 때 사용자 정의 헤더 <code>X-PINGOTHER</code> 와 <code>Content-Type</code> 를 사용할 것임을 서버에게 알립니다. 이제 서버는 이러한 조건 하에서 요청을 수락할 수 있는지 여부를 결정할 기회를 갖게 됩니다.</p>\n<p>위 두 번째 블록은 서버가 반환하는 응답으로, 요청 메서드(<code>POST</code>)와 요청 헤더(<code>X-PINGOTHER</code>)가 허용된다는 것을 나타냅니다. 이어지는 내용을 자세히 살펴보겠습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Origin: https://foo.example\nAccess-Control-Allow-Methods: POST, GET, OPTIONS\nAccess-Control-Allow-Headers: X-PINGOTHER, Content-Type\nAccess-Control-Max-Age: 86400\n</code></pre></div>\n<p>서버는 <code>Access-Control-Allow-Origin: https://foo.example</code> 헤더로 응답하여 요청을 보낸 출처 도메인만 접근 가능하도록 제한합니다. 또한 <code>Access-Control-Allow-Methods</code> 헤더로 응답하여 <code>POST</code> 와 <code>GET</code> 메서드가 해당 리소스를 요청하는 데 유효한 메서드임을 나타냅니다(이 헤더는 <a href=\"/ko/docs/Web/HTTP/Headers/Allow\"><code>Allow</code></a> 응답 헤더와 유사하지만, 접근 제어 맥락 내에서 엄격하게 사용됩니다).</p>\n<p>서버는 또한 <code>Access-Control-Allow-Headers</code> 헤더에 \"<code>X-PINGOTHER, Content-Type</code>\" 값을 설정하여 보내 이 헤더들이 실제 요청에 사용할 수 있는 허용된 헤더임을 확인해줍니다. <code>Access-Control-Allow-Methods</code> 와 마찬가지로 <code>Access-Control-Allow-Headers</code> 는 허용 가능한 헤더의 쉼표로 구분합니다.</p>\n<p>마지막으로, <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age\"><code>Access-Control-Max-Age</code></a> 는 또 다른 사전 요청을 보내지 않도록 사전 요청에 대한 응답을 얼마나 오래동안 캐시할 수 있는지 초 단위 시간 값을 제공합니다. 기본 값은 5초입니다. 현재 최대 캐시 시간은 86400초(= 24시간)입니다. 각 브라우저는 <code>Access-Control-Max-Age</code> 가 이를 초과할 때 우선되는 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age\">최대 내부 값</a>을 가집니다.</p>\n<p>사전 요청이 한번 완료되면 실제 요청이 전송됩니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>POST /doc HTTP/1.1\nHost: bar.other\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\nAccept-Language: en-us,en;q=0.5\nAccept-Encoding: gzip,deflate\nConnection: keep-alive\nX-PINGOTHER: pingpong\nContent-Type: text/xml; charset=UTF-8\nReferer: https://foo.example/examples/preflightInvocation.html\nContent-Length: 55\nOrigin: https://foo.example\nPragma: no-cache\nCache-Control: no-cache\n\n<person><name>Arun</name></person>\n\nHTTP/1.1 200 OK\nDate: Mon, 01 Dec 2008 01:15:40 GMT\nServer: Apache/2\nAccess-Control-Allow-Origin: https://foo.example\nVary: Accept-Encoding, Origin\nContent-Encoding: gzip\nContent-Length: 235\nKeep-Alive: timeout=2, max=99\nConnection: Keep-Alive\nContent-Type: text/plain\n\n[Some XML payload]\n</code></pre></div>\n<h4 id=\"사전_요청과_리다이렉트\">사전 요청과 리다이렉트</h4>\n<p>현재 모든 브라우저가 사전 요청 후 리디렉션하는 것을 지원하지 않습니다. 사전 요청 후 리다이렉트가 발생하면 일부 브라우저는 다음과 같은 오류 메시지를 띄웁니다.</p>\n<blockquote>\n <p>\n 요청이 <code>https://example.com/foo</code> 로 리디렉션되었습니다. 이는 사전 요청이 필요한 교차 출처 요청에 대해 허용되지 않습니다.\n 요청은 사전 요청이 필요합니다. 이는 교차 출처 리디렉트를 허용되지 않습니다.\n </p>\n</blockquote>\n<p>CORS 프로토콜은 원래 그러한 동작(리다이렉트)을 필요했지만, <a href=\"https://github.com/whatwg/fetch/commit/0d9a4db8bc02251cc9e391543bb3c1322fb882f2\" class=\"external\" target=\"_blank\">이후 더 이상 필요하지 않도록 변경되었습니다</a>. 그러나 모든 브라우저가 변경 사항을 구현하지는 않았기 때문에, 따라서 원래 필요했었던 동작(리다이렉트)이 여전히 보입니다.</p>\n<p>브라우저가 명세를 따라잡을 때까지 다음 중 하나 또는 둘 다 수행하여 이 제한을 해결할 수 있습니다.</p>\n<ul>\n <li>사전 요청을 피하거나 리디렉션을 피하기 위해(혹은 둘 다) 서버 측 동작을 변경</li>\n <li>사전 요청을 발생시키지 않는 <a href=\"#simple_requests\">단순 요청</a>으로 변경</li>\n</ul>\n<p>위 방법이 가능하지 않은 경우 다른 방법도 있습니다.</p>\n<ol>\n <li>실제 사전 요청이 도달할 URL 을 판별하기 위해 Fetch API 의 <a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/API/Response/url\"><code>Response.url</code></a> 또는 <a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/API/XMLHttpRequest/responseURL\"><code>XMLHttpRequest.responseURL</code></a>을 사용해 <a href=\"#simple_requests\">단순 요청</a>을 만듭니다.</li>\n <li>첫 번째 단계에서 <code>Response.url</code> 혹은 <code>XMLHttpRequest.responseURL</code> 로부터 얻은 URL을 사용하여 또 다른 요청(실제 요청)을 만듭니다.</li>\n</ol>\n<p>그러나 <code>Authorization</code> 헤더가 포함되어 있어 사전 요청을 트리거 한 요청이라면 위 단계를 통해 이 제한을 우회할 수 없습니다. 그리고 요청이 이뤄지는 서버에 대한 제어가 없다면 전혀 우회할 수 없습니다.</p>"}},{"type":"prose","value":{"id":"자격_증명을_포함한_요청","title":"자격 증명을 포함한 요청","isH3":true,"content":"<div class=\"notecard note\">\n <p><strong>참고:</strong> 다른 도메인으로 자격 증명 요청을 할 때, 서드파티 쿠키 정책이 여전히 적용됩니다. 이 정책은 서버와 클라이언트에서 설명된 모든 설정과 관계없이 항상 적용됩니다.</p>\n</div>\n<p><a href=\"/ko/docs/Web/API/Window/fetch\" title=\"fetch()\"><code>fetch()</code></a> 혹은 <a href=\"/ko/docs/Web/API/XMLHttpRequest\"><code>XMLHttpRequest</code></a> 와 CORS 을 통해 제공된 가장 흥미로운 기능은 <a href=\"/ko/docs/Web/HTTP/Cookies\">HTTP 쿠키</a>와 HTTP 인증 정보를 인식하는 \"자격 증명이 포함된\" 요청을 할 수 있다는 것입니다. 기본적으로 교차 출처 <code>fetch()</code> 또는 <code>XMLHttpRequest</code> 호출에서는 브라우저가 자격 증명을 전송하지 <strong>않습니다.</strong></p>\n<p><code>fetch()</code> 요청에 자격 증명을 포함하려면, <a href=\"/en-US/docs/Web/API/RequestInit\" class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\"><code>credentials</code></a> 옵션을 <code>\"include\"</code> 로 설정하십시오.</p>\n<p><code>XMLHttpRequest</code> 요청에 자격 증명을 포함하려면, <a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/API/XMLHttpRequest/withCredentials\"><code>XMLHttpRequest.withCredentials</code></a> 속성을 <code>true</code> 로 설정하십시오.</p>\n<p>이 예시에서 <code>https://foo.example</code> 에서 로드된 콘텐츠는 <code>https://bar.other</code> 의 리소스에 쿠키가 포함된 GET 메서드 단순 요청을 보냅니다. foo.example 의 콘텐츠는 다음과 같은 JavaScript 코드를 포함할 수 있습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">js</span></div><pre class=\"brush: js notranslate\"><code>const url = \"https://bar.other/resources/credentialed-content/\";\n\nconst request = new Request(url, { credentials: \"include\" });\n\nconst fetchPromise = fetch(request);\nfetchPromise.then((response) => console.log(response));\n</code></pre></div>\n<p>이 코드는 <a href=\"/ko/docs/Web/API/Request\"><code>Request</code></a> 객체를 생성하고, 생성자에서 <code>credentials</code> 옵션을 <code>\"include\"</code> 로 설정한 다음 이 요청을 <code>fetch()</code> 에 전달합니다. 이는 <code>GET</code> 메서드 단순 요청이기 때문에 사전 요청이 수행되지 않지만, 브라우저는 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials\"><code>Access-Control-Allow-Credentials</code></a><code>: true</code> 헤더가 없는 응답을 <strong>거부</strong>하고, 호출한 웹 콘텐츠에 응답을 제공하지 <strong>않습니다.</strong></p>\n<p>\n <img src=\"https://mdn.github.io/shared-assets/images/diagrams/http/cors/include-credentials.svg\" alt=\"Diagram of a simple GET request with Access-Control-Allow-Credentials\" loading=\"lazy\">\n</p>\n<p>다음은 클라이언트와 서버 간의 샘플 교환입니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>GET /resources/credentialed-content/ HTTP/1.1\nHost: bar.other\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\nAccept-Language: en-us,en;q=0.5\nAccept-Encoding: gzip,deflate\nConnection: keep-alive\nReferer: https://foo.example/examples/credential.html\nOrigin: https://foo.example\nCookie: pageAccess=2\n\nHTTP/1.1 200 OK\nDate: Mon, 01 Dec 2008 01:34:52 GMT\nServer: Apache/2\nAccess-Control-Allow-Origin: https://foo.example\nAccess-Control-Allow-Credentials: true\nCache-Control: no-cache\nPragma: no-cache\nSet-Cookie: pageAccess=3; expires=Wed, 31-Dec-2008 01:34:53 GMT\nVary: Accept-Encoding, Origin\nContent-Encoding: gzip\nContent-Length: 106\nKeep-Alive: timeout=2, max=100\nConnection: Keep-Alive\nContent-Type: text/plain\n\n[text/plain payload]\n</code></pre></div>\n<p>비록 요청의 <code>Cookie</code> 헤더가 <code>https://bar.other</code> 을 위한 쿠키를 포함하고 있지만, 이 예에서 설명한 것처럼 bar.other 가 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials\"><code>Access-Control-Allow-Credentials</code></a> 헤더에 <code>true</code> 값을 포함하여 응답하지 않으면, 응답은 무시되고 웹 콘텐츠에 제공되지 않습니다.</p>\n<h4 id=\"사전_요청과_자격_증명\">사전 요청과 자격 증명</h4>\n<p>CORS 사전 요청에는 자격 증명이 절대로 포함되지 않아야 합니다. 사전 요청에 대한 응답은 실제 요청이 자격 증명과 함께 수행될 수 있음을 나타내기 위해 <code>Access-Control-Allow-Credentials: true</code> 를 명시해야 합니다.</p>\n<div class=\"notecard note\">\n <p><strong>참고:</strong> 알부 기업 인증 서비스는 사전 요청할 때 TLS 클라이언트 인증서을 보내는 것을 요청합니다. 이는 <a href=\"https://fetch.spec.whatwg.org/#cors-protocol-and-credentials\" class=\"external\" target=\"_blank\">Fetch</a> 사양에 어긋나는 동작입니다.</p>\n <p>파이어폭스(Firefox)87 는 <code>network.cors_preflight.allow_client_cert</code> 을 <code>true</code> 으로 설정하여 이 비표준 동작을 활성화하는 것을 허용합니다.(<a href=\"https://bugzil.la/1511151\" class=\"external\" target=\"_blank\">Firefox bug 1511151</a>) 현재 Chromium 기반 브라우저는 CORS 사전 요청에서 항상 TLS 클라이언트 인증서를 전송합니다 (<a href=\"https://crbug.com/775438\" class=\"external\" target=\"_blank\">Chrome bug 775438</a>).</p>\n</div>\n<h4 id=\"자격_증명이_포함된_요청과_와일드카드\">자격 증명이 포함된 요청과 와일드카드</h4>\n<p>자격 증명이 포함된 요청에 응답하는 경우</p>\n<ul>\n <li>\n <p>서버는 <code>Access-Control-Allow-Origin</code> 응답 헤더 값으로 \"<code>*</code>\" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 출처를 지정해야 합니다. 예를 들어 <code>Access-Control-Allow-Origin: https://example.com</code>.</p>\n </li>\n <li>\n <p>서버는 <code>Access-Control-Allow-Headers</code> 응답 헤더 값으로 \"<code>*</code>\" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 헤더 이름 목록을 지정해야 합니다. 예를 들어 <code>Access-Control-Allow-Headers: X-PINGOTHER, Content-Type</code>.</p>\n </li>\n <li>\n <p>서버는 <code>Access-Control-Allow-Methods</code> 응답 헤더 값으로 \"<code>*</code>\" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 메서드 이름 목록을 지정해야 합니다. 예를 들어 <code>Access-Control-Allow-Methods: POST, GET</code>.</p>\n </li>\n <li>\n <p>서버는 <code>Access-Control-Expose-Headers</code> 응답 헤더 값으로 \"<code>*</code>\" 와일드카드를 <strong>지정해서는 안 되며</strong>, 대신 명시적인 헤더 이름 목록을 지정해야 합니다. 예를 들어 <code>Access-Control-Expose-Headers: Content-Encoding, Kuma-Revision</code>.</p>\n </li>\n</ul>\n<p>요청에 자격 증명(가장 일반적으로는 <code>Cookie</code> 헤더)이 포함되고 응답에 <code>Access-Control-Allow-Origin: *</code> 헤더(즉, 와일드카드)가 포함되어 있으면, 브라우저는 응답에 대한 접근을 차단하고 개발자 도구 콘솔에 CORS 오류를 보고합니다.</p>\n<p>그러나 요청에 자격 증명(예를 들어 <code>Cookie</code> 헤더)이 포함되고 응답에 와일드카드 대신 실제 출처(예를 들어 <code>Access-Control-Allow-Origin: https://example.com</code>)가 포함되어 있으면, 브라우저는 지정된 출처에서 응답에 접근할 수 있도록 허용합니다.</p>\n<p>또한 응답의 <code>Access-Control-Allow-Origin</code> 헤더 값에 실제 출처가 아닌 \"<code>*</code>\" 와일드카드인 경우 응답의 <code>Set-Cookie</code> 헤더는 쿠키를 설정하지 않습니다.</p>\n<h4 id=\"서드_파티_쿠키\">서드 파티 쿠키</h4>\n<p>CORS 응답에 설정된 쿠키는 일반적인 서드 파티(third-party) 쿠키 정책의 적용을 받습니다. 위의 예에서, 페이지는 <code>foo.example</code> 에서 로드되지만, 응답의 <code>Cookie</code> 헤더는 <code>bar.other</code> 에서 전송되므로 사용자의 브라우저가 모든 서드-파티 쿠키를 거부하도록 설정된 경우 해당 쿠키는 저장되지 않습니다.</p>\n<p>요청의 쿠키도 일반적인 서드-파티 쿠키 정책에 따라 억제될 수 있습니다. 따라서 강제된 쿠키 정책은 이 장에서 설명된 기능을 무효화 할 수 있으며, 자격 증명이 포함된 요청을 전혀 수행할 수 없게 만들 수 있습니다.</p>\n<p><a href=\"/ko/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value\">SameSite</a> 속성에 대한 쿠키 정책이 적용됩니다.</p>"}},{"type":"prose","value":{"id":"http_응답_헤더","title":"HTTP 응답 헤더","isH3":false,"content":"<p>이 섹션에서는 교차 출처 리소스 공유 명세에 정의된 대로 서버가 접근 제어 요청을 위해 보내는 HTTP 응답 헤더가 나열되어 있습니다. 이전 섹션에서는 이러한 내용이 실제로 어떻게 작동하는지에 대한 개요를 제공합니다.</p>"}},{"type":"prose","value":{"id":"access-control-allow-origin","title":"Access-Control-Allow-Origin","isH3":true,"content":"<p>반환된 리소스에는 다음 구문과 함께 하나의 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Origin\"><code>Access-Control-Allow-Origin</code></a> 헤더가 있을 수 있습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Origin: <origin> | *\n</code></pre></div>\n<p><code>Access-Control-Allow-Origin</code> 은 단일 출처를 지정하여 브라우저가 해당 출처가 리소스에 접근하도록 허용합니다. 또는 자격 증명이 <strong>없는</strong> 요청의 경우 \"<code>*</code>\" 와일드 카드는 브라우저의 origin에 상관없이 모든 리소스에 접근하도록 허용합니다.</p>\n<p>예를 들어 <code>https://mozilla.org</code> 의 코드가 리소스에 접근 할 수 있도록 하려면 다음과 같이 지정할 수 있습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Origin: https://mozilla.org\nVary: Origin\n</code></pre></div>\n<p>서버가 \"<code>*</code>\" 와일드카드 대신에 하나의 출처를 지정하는 경우(이 출처는 허가된 출처 리스트의 일부로 요청 출처에 따라 동적으로 변경할 수 있습니다.), 서버는 응답이 <a href=\"/ko/docs/Web/HTTP/Headers/Origin\"><code>Origin</code></a> 요청 헤더에 따라 다르다는 것을 클라이언트에 알려주기 위해 <a href=\"/ko/docs/Web/HTTP/Headers/Vary\"><code>Vary</code></a> 응답 헤더에 <code>Origin</code> 을 포함해야 합니다.</p>"}},{"type":"prose","value":{"id":"access-control-expose-headers","title":"Access-Control-Expose-Headers","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Expose-Headers\"><code>Access-Control-Expose-Headers</code></a> 헤더는 JavaScript(예를 들어 <a class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\" href=\"/en-US/docs/Web/API/Response/headers\"><code>Response.headers</code></a>)가 브라우저에서 접근할 수 있는 허용된 헤더 목록에 지정된 헤더를 추가합니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Expose-Headers: <header-name>[, <header-name>]*\n</code></pre></div>\n<p>예를 들면 다음과 같습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header\n</code></pre></div>\n<p>위 응답에 의해 <code>X-My-Custom-Header</code> 와 <code>X-Another-Custom-Header</code> 헤더가 브라우저에 노출됩니다.</p>"}},{"type":"prose","value":{"id":"access-control-max-age","title":"Access-Control-Max-Age","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Max-Age\"><code>Access-Control-Max-Age</code></a> 헤더는 사전 요청 결과를 캐시할 수 있는 시간을 나타냅니다. 사전 요청 예제는 위를 참조하세요.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Max-Age: <delta-seconds>\n</code></pre></div>\n<p><code>delta-seconds</code> 파라미터는 결과를 캐시할 수 있는 시간(초)를 나타냅니다.</p>"}},{"type":"prose","value":{"id":"access-control-allow-credentials","title":"Access-Control-Allow-Credentials","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials\"><code>Access-Control-Allow-Credentials</code></a> 헤더는 <code>credentials</code>가 참일 때 요청에 대한 응답을 표시할 수 있는지 여부를 나타냅니다. 사전 요청에 대한 응답의 일부로 사용될 때, 이 헤더는 실제 요청이 자격 증명과 함께 수행될 수 있는지 여부를 나타냅니다. 단, <code>GET</code> 메서드 단순 요청은 사전 요청이 수행되지 않으므로, 자격 증명과 함께 리소스에 대한 요청이 이루어진 경우 이 헤더가 리소스와 함께 반환되지 않으면 브라우저는 응답을 무시하고 웹 콘텐츠에 반환하지 않습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Credentials: true\n</code></pre></div>\n<p><a href=\"#%EC%9E%90%EA%B2%A9_%EC%A6%9D%EB%AA%85%EC%9D%84_%ED%8F%AC%ED%95%A8%ED%95%9C_%EC%9A%94%EC%B2%AD\">자격 증명이 포함된 요청</a>은 위에서 논의하였습니다.</p>"}},{"type":"prose","value":{"id":"access-control-allow-methods","title":"Access-Control-Allow-Methods","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Methods\"><code>Access-Control-Allow-Methods</code></a> 헤더는 리소스에 접근할 때 허용되는 메서드를 지정합니다. 이 헤더는 사전 요청에 대한 응답으로 사용됩니다. 사전 요청이 발생하는 조건은 위에서 논의하였습니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Methods: <method>[, <method>]*\n</code></pre></div>\n<p>위에 <a href=\"/ko/docs/Glossary/Preflight_request\">사전 요청</a>의 예가 제공되어 있으며, 이 예시에는 이 헤더를 브라우저에 전송하는 예가 포함되어 있습니다.</p>"}},{"type":"prose","value":{"id":"access-control-allow-headers","title":"Access-Control-Allow-Headers","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Headers\"><code>Access-Control-Allow-Headers</code></a> 헤더는 <a href=\"/ko/docs/Glossary/Preflight_request\">사전 요청</a>에 대한 응답으로 사용되며, 실제 요청을 할 때 사용할 수 있는 HTTP 헤더를 나타냅니다. 이 헤더는 브라우저의 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers\"><code>Access-Control-Request-Headers</code></a> 헤더에 대한 서버 측의 응답입니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Allow-Headers: <header-name>[, <header-name>]*\n</code></pre></div>"}},{"type":"prose","value":{"id":"http_요청_헤더","title":"HTTP 요청 헤더","isH3":false,"content":"<p>이 섹션에서는 클라이언트가 교차 출처 공유 기능을 사용하기 위해 HTTP 요청을 발행할 때 사용할 수 있는 헤더들을 나열합니다. 이러한 헤더는 서버를 호출할 때 개발자를 위해 설정됩니다. 교차 출처 요청을 만드는 개발자는 이러한 교차 출처 공유 요청 헤더를 프로그래밍적으로 설정할 필요가 없습니다.</p>"}},{"type":"prose","value":{"id":"origin","title":"Origin","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Origin\"><code>Origin</code></a> 헤더는 교차 출처 접근 요청 또는 사전 요청 출처를 나타냅니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Origin: <origin>\n</code></pre></div>\n<p>origin 값은 요청이 시작된 서버를 나타내는 URI 입니다. 경로 정보는 포함하지 않고, 오직 서버 이름만 포함합니다.</p>\n<div class=\"notecard note\">\n <p><strong>참고:</strong> <code>origin</code> 값은 <code>null</code> 또는 URI 가 올 수 있습니다.</p>\n</div>\n<p>접근 제어 요청에는 <strong>항상</strong> <a href=\"/ko/docs/Web/HTTP/Headers/Origin\"><code>Origin</code></a> 헤더가 전송됩니다.</p>"}},{"type":"prose","value":{"id":"access-control-request-method","title":"Access-Control-Request-Method","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Request-Method\"><code>Access-Control-Request-Method</code></a> 헤더는 실제 요청에서 어떤 HTTP 메서드를 사용할지 서버에게 알려주기 위해 사전 요청할 때 사용됩니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Request-Method: <method>\n</code></pre></div>\n<p>이 사용법의 예제는 <a href=\"#%EC%82%AC%EC%A0%84_%EC%9A%94%EC%B2%ADpreflighted_requests\">위에서</a> 찾을 수 있습니다.</p>"}},{"type":"prose","value":{"id":"access-control-request-headers","title":"Access-Control-Request-Headers","isH3":true,"content":"<p><a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Request-Headers\"><code>Access-Control-Request-Headers</code></a> 헤더는 사전 요청을 발행할 때 사용되며, 실제 요청에서 사용할 HTTP 헤더를 서버에 알리기 위해 사용됩니다(예를 들어 <a href=\"/en-US/docs/Web/API/RequestInit\" class=\"only-in-en-us\" title=\"이 페이지는 현재 영어로만 제공됩니다\"><code>headers</code></a> 옵션을 통해 전달). 이 브라우저 측 헤더는 <a href=\"/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Headers\"><code>Access-Control-Allow-Headers</code></a> 라는 서버 측 헤더로 응답 받게 됩니다.</p>\n<div class=\"code-example\"><div class=\"example-header\"><span class=\"language-name\">http</span></div><pre class=\"brush: http notranslate\"><code>Access-Control-Request-Headers: <field-name>[,<field-name>]*\n</code></pre></div>\n<p>이 사용법의 예제는 <a href=\"#%EC%82%AC%EC%A0%84_%EC%9A%94%EC%B2%ADpreflighted_requests\">위에서</a> 찾을 수 있습니다.</p>"}},{"type":"specifications","value":{"title":"명세서","id":"명세서","isH3":false,"specifications":[{"bcdSpecificationURL":"https://fetch.spec.whatwg.org/#http-access-control-allow-origin","title":"Fetch Standard"}],"query":"http.headers.Access-Control-Allow-Origin"}},{"type":"browser_compatibility","value":{"title":"브라우저 호환성","id":"브라우저_호환성","isH3":false,"query":"http.headers.Access-Control-Allow-Origin"}},{"type":"prose","value":{"id":"같이_보기","title":"같이 보기","isH3":false,"content":"<ul>\n <li>\n <p><a href=\"/ko/docs/Web/HTTP/CORS/Errors\">CORS errors</a></p>\n </li>\n <li>\n <p><a href=\"https://enable-cors.org/server.html\" class=\"external\" target=\"_blank\">CORS 활성화: 내 서버에 CORS 지원을 추가하고 싶다</a></p>\n </li>\n <li><a href=\"/ko/docs/Web/API/XMLHttpRequest\"><code>XMLHttpRequest</code></a></li>\n <li>\n <p><a href=\"/ko/docs/Web/API/Fetch_API\">Fetch API</a></p>\n </li>\n <li>\n <p><a href=\"https://httptoolkit.tech/will-it-cors\" class=\"external\" target=\"_blank\">CORS 일까요?</a> - an interactive CORS explainer & generator</p>\n </li>\n <li>\n <p><a href=\"https://www.telerik.com/blogs/using-cors-with-all-modern-browsers\" class=\"external\" target=\"_blank\">모든(현대) 브라우저에서 CORS 사용하기</a></p>\n </li>\n <li>\n <p><a href=\"https://alfilatov.com/posts/run-chrome-without-cors/\" class=\"external\" target=\"_blank\">CORS 없이 Chrome 브라우저를 실행하는 방법</a></p>\n </li>\n <li>\n <p><a href=\"https://stackoverflow.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested-resource-whe/43881141#43881141\" class=\"external\" target=\"_blank\">일반적인 문제를 다루기 위한 방법에 대한 스택 오버플로우 답변</a>:</p>\n <ul>\n <li>How to avoid the CORS preflight</li>\n <li>How to use a CORS proxy to get around <em>\"No Access-Control-Allow-Origin header\"</em></li>\n <li>How to fix <em>\"Access-Control-Allow-Origin header must not be the wildcard\"</em></li>\n </ul>\n </li>\n</ul>"}}],"toc":[{"text":"어떤 요청이 CORS를 사용합니까?","id":"어떤_요청이_cors를_사용합니까"},{"text":"기능적 개요","id":"기능적_개요"},{"text":"접근 제어 시나리오 예제","id":"접근_제어_시나리오_예제"},{"text":"HTTP 응답 헤더","id":"http_응답_헤더"},{"text":"HTTP 요청 헤더","id":"http_요청_헤더"},{"text":"명세서","id":"명세서"},{"text":"브라우저 호환성","id":"브라우저_호환성"},{"text":"같이 보기","id":"같이_보기"}],"summary":"교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 브라우저가 자신의 출처가 아닌 다른 어떤 출처(도메인, 스킴 혹은 포트)로부터 자원을 로딩하는 것을 허용하도록 서버가 허가 해주는 HTTP 헤더 기반 메커니즘입니다. 또한 CORS 는 교차 출처 리소스를 호스팅하는 서버가 실제 요청을 허가할 것인지 확인하기 위해 브라우저가 보내는 \"사전 요청(프리플라이트, Preflight)\" 메커니즘에 의존합니다. 이 사전 요청에서 브라우저는 실제 요청에서 사용할 HTTP 메서드와 헤더들에 대한 정보가 표시된 헤더에 담아 보냅니다.","popularity":0.0089,"modified":"2024-08-12T08:04:04.000Z","other_translations":[{"locale":"de","title":"Cross-Origin Resource Sharing (CORS)","native":"Deutsch"},{"locale":"en-US","title":"Cross-Origin Resource Sharing (CORS)","native":"English (US)"},{"locale":"es","title":"Intercambio de recursos de origen cruzado (CORS)","native":"Español"},{"locale":"fr","title":"Cross-origin resource sharing (CORS)","native":"Français"},{"locale":"ja","title":"オリジン間リソース共有 (CORS)","native":"日本語"},{"locale":"pt-BR","title":"Cross-Origin Resource Sharing (CORS)","native":"Português (do Brasil)"},{"locale":"ru","title":"Cross-Origin Resource Sharing (CORS)","native":"Русский"},{"locale":"zh-CN","title":"跨源资源共享(CORS)","native":"中文 (简体)"},{"locale":"zh-TW","title":"跨來源資源共享(CORS)","native":"正體中文 (繁體)"}],"pageType":"unknown","source":{"folder":"ko/web/http/cors","github_url":"https://github.com/mdn/translated-content/blob/main/files/ko/web/http/cors/index.md","last_commit_url":"https://github.com/mdn/translated-content/commit/95eb50659c85f6fd2c17974117f33e7be92b1f22","filename":"index.md"},"short_title":"교차 출처 리소스 공유 (CORS)","parents":[{"uri":"/ko/docs/Web","title":"개발자를 위한 웹 기술"},{"uri":"/ko/docs/Web/HTTP","title":"HTTP"},{"uri":"/ko/docs/Web/HTTP/CORS","title":"교차 출처 리소스 공유 (CORS)"}],"pageTitle":"교차 출처 리소스 공유 (CORS) - HTTP | MDN","noIndexing":false}}</script></body></html>