Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.

El encabezado de respuesta Access-Control-Allow-Origin indica si los recursos de la respuesta pueden ser compartidos con el origen dado.

Tipo de encabezado Encabezado de respuesta
Nombre de encabezado prohibido no

Sintaxis

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: <origen>

Directivas

*
Para las peticiones sin credenciales, el servidor puede especificar el caracter "*" como un comodín, permitiendo a cualquier origen acceder al recurso. El acceso será permitido solamente para las peticiones hechas con el atributo crossorigin definido como "anonymous". Intentar usar el comodín con credenciales resultará en un error.

<origen>
Especifica una URI que puede acceder al recurso. Puedes especificar uno o más orígenes separados por comas.

Ejemplos

Para permitir a cualquier origen el acceso a tus recursos, puedes especificar:

Access-Control-Allow-Origin: *

Para permitir a https://developer.mozilla.org acceder a tus recursos, puedes especificar:

Access-Control-Allow-Origin: https://developer.mozilla.org

CORS y caché

Si el servidor especifica un host de origen en lugar de "*", entonces éste puede incluir Origin en el encabezado de respuesta Vary para indicar a los clientes que las respuestas del servidor serán diferentes en función del valor del encabezado de solicitud Origin.  

Access-Control-Allow-Origin: https://developer.mozilla.org
Vary: Origin

 

Manejo de CORS en el servidor (ejemplo en Java)

De esta manera puedo crear un filtro simple de CORS para permitir todo tipo de CORS usando Java en el servidor:

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() {
    }

}

Especificaciones

Especificación Estado Comentario
Fetch
La definición de 'Access-Control-Allow-Origin' en esta especificación.
Living Standard Definición Inicial.

Compatibilidad del Navegador

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Soporte básicoChrome Soporte completo 4Edge Soporte completo 12Firefox Soporte completo 3.5IE Soporte completo 10Opera Soporte completo 12Safari Soporte completo 4WebView Android Soporte completo 2Chrome Android Soporte completo SiEdge Mobile Soporte completo SiFirefox Android Soporte completo 4Opera Android Soporte completo 12Safari iOS Soporte completo 3.2Samsung Internet Android Soporte completo Si

Leyenda

Soporte completo  
Soporte completo

Veáse también

Etiquetas y colaboradores del documento

Colaboradores en esta página: deiberdev, anxobotana, JhonAguiar
Última actualización por: deiberdev,