Solicitar campo de cabecera Access-Control-Allow-Encabezados no está permitido por Access-Control-Allow-Encabezados

Yo estoy tratando de enviar los archivos a mi servidor mediante una petición post, pero cuando se envía causa el error:

Solicitar campo de encabezado de Tipo de Contenido no está permitido por Access-Control-Allow-Encabezados.

Así que busqué en google el error y añade los encabezados:

$http.post($rootScope.URL, {params: arguments}, {headers: {
    "Access-Control-Allow-Origin" : "*",
    "Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
    "Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
}

Luego me sale el error:

Solicitar campo de cabecera Access-Control-Allow-Origin no está permitido por Access-Control-Allow-Encabezados

Así que busqué en google y que la única pregunta similar que pude encontrar fue siempre un medio de respuesta cerrada a continuación como fuera de tema. Los encabezados se supone que voy a agregar/quitar?

InformationsquelleAutor user3194367 | 2014-09-08

13 Kommentare

  1. 174

    La servidor (que el POST se envía la solicitud a) debe incluir el Access-Control-Allow-Headers encabezado (etc) en su respuesta. Ponerlos en su solicitud de el cliente no tiene ningún efecto.

    Esto es debido a que es en el servidor para indicar que se acepta la cruz-las solicitudes de origen (y que permite la Content-Type el encabezado de la solicitud, y así sucesivamente) – el cliente no puede decidir por sí mismo que un servidor debe permitir CORS.

    • ¿Cómo puedo configurar los encabezados en el backend?
    • Depende de su backend.
    • Supongo que tendré que hablar con mi servidor de guy.
    • respuesta.addHeader(«Access-Control-Allow-Headers», «clave»);
    • clave es qué? Content-Type?
    • Intente esto : cabeceras = req.encabezados[‘access-control-solicitud-headers’]; if (encabezados) res.setHeader(‘Access-Control-Allow-Headers’, encabezados);
    • He tratado de configurar este en nginx:add_header Access-Control-Allow-Headers X-Requested-With,Content-Type; y sólo necesita anexar Content-Type, y funciona.
    • Como se ha observado en múltiples respuestas para Control de Acceso-Solicitud-Encabezados, claramente existen diferencias debido a los diferentes entornos. Lo que funcionó para mí era conseguir que el acceso a la solicitud objeto y el volcado de los valores para los encabezados, pero específicamente el valor de encabezado de «Access-Control-Solicitud-Headers». Luego, copia y pega esto en tu respuesta.setHeader(«Access-Control-Allow-Headers», «{pegar aquí}»)
    • ejemplo, por favor!
    • así que este es un problema del navegador a la derecha? Lo que significa que puede golpear la nuestra en una mocha de pruebas de integración a nivel local, pero me sale este error al ejecutar el mismo código en el navegador
    • Quitar Access-Control-Allow-Origin campo del encabezado de la solicitud.

  2. 217

    Yo tenía el mismo problema. En la documentación de jQuery He encontrado:

    Para la cruz de dominio de las solicitudes, estableciendo el tipo de contenido a otra cosa que application/x-www-form-urlencoded, multipart/form-data, o text/plain activará el navegador para enviar un OPCIONES de verificación previa solicitud al servidor.

    Así, a pesar de que el servidor permite la solicitud de origen, pero no permite Access-Control-Allow-Headers , va a tirar errores. Por defecto angular tipo de contenido es application/json, que está tratando de enviar una OPCIÓN de solicitud. Intentar sobrescribir angular predeterminada encabezado o permitir Access-Control-Allow-Headers en el servidor final. Aquí es un angular de la muestra:

    $http.post(url, data, {
        headers : {
            'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
        }
    });
    • Esto debe ser aceptado como respuesta, mucho más informativo que el otro!
    • Me gustaría multipart/form-data porque quiero uplaod algo
    • y cómo permitir que en el servidor, por ejemplo usando PHP? lo de cabecera?
    • en php hay functiion nombre de encabezado() para establecer el encabezado. ver el nombre de encabezado de abajo respuestas
    • Funcionaba de maravilla, gracias!
    • En Angular 2, hacer algo como esto: var encabezados:los Encabezados = new Encabezados(); cabeceras.append(‘Content-Type’, ‘application/x-www-form-urlencoded; charset=UTF-8’); var opciones = {encabezados:los encabezados}; este.http.post(este.presenseURL, datos, opciones)…
    • or allow Access-Control-Allow-Headers in server end ¿cómo?
    • depende de qué plataforma de servidor que utiliza. si java no hay ejemplo en otras respuestas, si php entonces no es un nombre de función header para establecer el encabezado de la respuesta
    • Impresionante! Gracias por eso! Solucionado un error similar, me fue encontrando con el uso de Axios v18 en Reaccionar 16.4.2.
    • bienvenido
    • Funcionan bien! Esto debe ser aceptado respuesta
    • Finalmente, después de dos días de investigación. Tengo ya palabras para darles las gracias!

  3. 47

    Si eso ayuda a alguien, (incluso si esta es la clase de pobres, ya que solo debemos permitir que este para dev propósito) aquí es una solución de Java como me encontré con el mismo problema.
    [Editar] no utilizar el comodín *, ya que es una mala solución, localhost si usted realmente necesita tener algo de trabajo a nivel local.

    public class SimpleCORSFilter implements Filter {
    
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "my-authorized-proxy-or-domain");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
        chain.doFilter(req, res);
    }
    
    public void init(FilterConfig filterConfig) {}
    
    public void destroy() {}
    
    }
    • Como se ha observado en múltiples respuestas para Control de Acceso-Solicitud-Encabezados, claramente existen diferencias debido a los diferentes entornos. Lo que funcionó para mí era conseguir que el acceso a la solicitud objeto y el volcado de los valores para los encabezados, pero específicamente el valor de encabezado de «Access-Control-Solicitud-Headers». Luego, copia y pega esto en tu respuesta.setHeader(«Access-Control-Allow-Headers», «{pegar aquí}»); también estoy usando Java, pero me requieren valores adicionales y algunos de los mencionados en esta respuesta no me necesita.
    • Este fue un parcial de (y como se ha dicho, pobres) de la solución para ayudar a la gente y compartir pistas de un año atrás. Yo no veo el punto de abajo de la votación, pero bueno, esto es su libertad. La idea es permitir a los encabezados en el lado del servidor por lo que cuando una OPCIÓN de pedido es enviado, el cliente, el navegador sabe que los encabezados son permitidos. Reconozco que hay un poco de confusión, mi CORS filtro ha cambiado mucho desde entonces. Como mejor práctica, Access-Control-Allow-Origin nunca debe ser *; en mi aplicación, que se establece por una propiedad.
    • La solución ha sido editado para incluir las mejores prácticas
  4. 14

    El servidor (que el POST se envía la solicitud a) debe incluir el Tipo de Contenido encabezado en su respuesta.

    Aquí está una lista de encabezados para incluir, incluyendo uno personalizado «X_ACCESS_TOKEN» encabezado:

    "X-ACCESS_TOKEN", "Access-Control-Allow-Origin", "Authorization", "Origin", "x-requested-with", "Content-Type", "Content-Range", "Content-Disposition", "Content-Description"

    Que es lo que el servidor http hombre necesita para configurar el servidor web que usted está enviando su solicitud.

    Usted también puede preguntar a su servidor chico para exponer el «Content-Length» en el encabezado.

    Él va a reconocer esto como un Cross-Origin Resource Sharing (CORS) petición y deben entender las implicaciones de hacer esas configuraciones de servidor.

    Para más detalles ver:

  5. 9

    Puede activar el correcto encabezado en PHP con este:

    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
    header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, X-Requested-With");
    • Por favor, describa cómo su respuesta es diferente a las otras respuestas. Acaba de publicar el código no es muy útil.
    • Usted es una estrella de rock, el resto de las respuestas profundizar en el aspecto técnico. El tuyo soluciona mi problema, especificando los métodos que debería estar permitida!
  6. 8

    La siguiente a mi me funciona con nodejs:

    xServer.use(function(req, res, next) {
      res.setHeader("Access-Control-Allow-Origin", 'http://localhost:8080');
      res.setHeader('Access-Control-Allow-Methods', 'POST,GET,OPTIONS,PUT,DELETE');
      res.setHeader('Access-Control-Allow-Headers', 'Content-Type,Accept');
    
      next();
    });
    • ¿el orden de los Access-Control-Allow-Métodos de la materia?
    • creo que no importa.
  7. 4

    Los encabezados de que están tratando de establecer son respuesta encabezados. Ellos tienen que ser proporcionados, en la respuesta, el servidor está haciendo la solicitud.

    Que no tienen lugar de ser configurado en el cliente. No tendría sentido tener un medio para conceder permisos si pudieran ser concedidas por el sitio que quería permiso en lugar de en el sitio que la propiedad de los datos.

    • ¿Cómo puedo configurar los encabezados en el backend?
    • Depende de tu backend. No sé qué servidor HTTP o lenguaje de programación que está haciendo la solicitud.
    • Supongo que tendré que hablar con mi servidor de guy.
  8. 3

    Si alguien tiene este problema con el consentimiento expreso del servidor, agregue la siguiente middleware

    app.use(function(req, res, next) {
      res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
      next();
    });
  9. 3

    si algunas pruebas de javascript solicitudes de ionic2 o angularjs 2 , en su chrome en el pc o mac , a continuación, asegúrese de que usted instale CORS plugin para el navegador chrome para permitir el origen de la cruz .

    mayba obtener solicitudes de trabajo sin necesidad de que , pero el post y pone y eliminar necesitaremos para instalar cors plugin para probar a ir sin problemas , que definitley no mola , pero no sé cómo la gente lo hace sin CORS plugin .

    y también estar seguro de la respuesta en json es no devolver 400 por algunos json estado

  10. 3

    este es backend problema. si el uso de las velas de la api en el backend de cambio cors.js y añadir su presentadas aquí

    module.exports.cors = {
      allRoutes: true,
      origin: '*',
      credentials: true,
      methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
      headers: 'Origin, X-Requested-With, Content-Type, Accept, Engaged-Auth-Token'
    };
  11. 2

    En mi caso, estoy recibiendo varios parámetros como @HeaderParam en un método de servicio web.

    Estos parámetros DEBE ser declarada en el CORS filtro de esa manera:

    @Provider
    public class CORSFilter implements ContainerResponseFilter {
    
        @Override
        public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
    
            MultivaluedMap<String, Object> headers = responseContext.getHeaders();
    
            headers.add("Access-Control-Allow-Origin", "*");
            ...
            headers.add("Access-Control-Allow-Headers", 
            /*
             * name of the @HeaderParam("name") must be declared here (raw String):
             */
            "name", ...);
            headers.add("Access-Control-Allow-Credentials", "true");
            headers.add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");   
        }
    }
  12. 2

    Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers error
    significa que Access-Control-Allow-Origin campo de encabezado de HTTP no es manejado o permitido por la respuesta. Quitar Access-Control-Allow-Origin campo del encabezado de la solicitud.

  13. 0

    En Asp Net Core, para ponerla de trabajo para el desarrollo; en Startup.cs, Configure method agregar

    app.UseCors(options => options.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...