Access-Control-Allow-Origin
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015ë 7ì.
Access-Control-Allow-Origin ìëµ í¤ëë ì´ ìëµì´ 주ì´ì§ originì¼ë¡ë¶í°ì ìì² ì½ëì ê³µì ë ì ìëì§ë¥¼ ëíë
ëë¤.
| Header type | Response header |
|---|---|
| Forbidden request header | no |
구문
Access-Control-Allow-Origin: * Access-Control-Allow-Origin: <origin> Access-Control-Allow-Origin: null
ì§ìì
*-
credentialì´ ìë ìì²ë¤ì ìì¼ëì¹´ëë¡ì¨ 문ì ê° "*"ì´ ëª ìë ì ììµëë¤. ì´ ê°ì ë¸ë¼ì°ì ì 리ìì¤ì ì ê·¼íë ììì originì¼ë¡ë¶í°ì ìì² ì½ë를 íì©í¨ì ì립ëë¤. ìì¼ëì¹´ë를 credentialê³¼ í¨ê» ì¬ì©íë ¤ê³ íë©´ ì¤ë¥ê° ë°ìí©ëë¤.
<origin>-
originì ëª ìí©ëë¤. íëì originë§ ëª ìë ì ììµëë¤.
ìì
ë¸ë¼ì°ì ì 리ìì¤ì ì ê·¼íë ììì originì¼ë¡ë¶í°ì ìì²ì íì©íë¤ê³ ì리ë ìëµì ë¤ìì í¬í¨í ê²ì ëë¤:
Access-Control-Allow-Origin: *
ë¸ë¼ì°ì ì https://developer.mozilla.orgì¼ë¡ë¶í°ì ìì²ì íì©íë¤ê³ ì리ë ìëµì ë¤ìì í¬í¨í ê²ì
ëë¤:
Access-Control-Allow-Origin: https://developer.mozilla.org
ê°ë¥í Access-Control-Allow-Origin ê°ì íì©ë origin ì§í©ì¼ë¡ ì ííë ê²ì ìì² í¤ëì Origin를 ê²ì¬íë ìë² ì¸¡ ì½ëê° íìí©ëë¤. ì´ë¥¼ íì©ë origin 리ì¤í¸ì ë¹êµíê³ , Origin ê°ì´ 리ì¤í¸ì ìì¼ë©´ Access-Control-Allow-Origin ê°ì Originê³¼ ëì¼í ê°ì¼ë¡ ì¤ì í©ëë¤.
CORS and caching
ìë²ê° ("*" ìì¼ëì¹´ë ì¸ì) ëª
ìì ì¸ originì Access-Control-Allow-Origin ê³¼ í¨ê» ìëµì¼ë¡ ë³´ë´ë©´, ìëµì ê°ì´ Originì¸ Vary ìëµ í¤ë ëí í¬í¨í´ì¼ í©ëë¤ â ë¸ë¼ì°ì ì ìë²ê° Origin ìì² í¤ëì ê°ì ë°ë¼ ë¤ë¥´ê² ìëµí ì ììì ì리기 ìí´.
Access-Control-Allow-Origin: https://developer.mozilla.org Vary: Origin
Handling CORS on the server (Java example)
ë¤ìì Java ì½ëë CORS ìì² í¤ë를 ì¤ì í©ëë¤. ì½ëê° ì´ë»ê² Access-Control-Allow-Origin ê°ì Origin ìì² í¤ëì ëì¼í ê°ì ì¤ì íëì§ ìì ëììì¤.
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component
public class SimpleCORSFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);
public SimpleCORSFilter() {
log.info("SimpleCORSFilter init");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
ëª ì¸ì
| Specification |
|---|
| Fetch > # http-access-control-allow-origin > |