¿Cómo puedo establecer encabezado de respuesta en express.js activos

Necesitas CORS para ser habilitado en los scripts servido por expreso. Cómo puedo configurar los encabezados en estos devuelven respuestas públicas/activos?

InformationsquelleAutor Dr.Knowitall | 2014-05-20

8 Kommentare

  1. 320

    Hay al menos un middleware en el mecanismo nacional de prevención para el manejo de CORS en Express: cors. [ver @mscdex respuesta]

    Esta es la forma de personalizar los encabezados de respuesta, a partir de la ExpressJS DOC

    res.set(field, [value])

    Establecer el encabezado de campo para valor

    res.set('Content-Type', 'text/plain');

    o pasar un objeto de conjunto de varios campos a la vez.

    res.set({
      'Content-Type': 'text/plain',
      'Content-Length': '123',
      'ETag': '12345'
    })

    Un alias como

    res.header(field, [value])
    • ¿Cómo puedo obtener estos valores? Porque me puse estos valores en res objeto. Cuando intento ver este contenido me voy indefinido mediante res.headers;
    • Entonces yo uso res.write('content')?
    • Esta línea debe ser utilizada antes de la redacción de la cabeza.
    • Por alguna razón res.set no funciona para mí, pero la cors middleware hizo el truco apenas a la derecha.
  2. 33

    Esto es tan molesto.

    Bueno si alguien sigue teniendo problemas o simplemente no se desea añadir otra biblioteca. Todo lo que tienes que hacer es colocar este medio ware línea de código antes de que sus rutas.

    Cors Ejemplo

    app.use((req, res, next) => {
        res.append('Access-Control-Allow-Origin', ['*']);
        res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
        res.append('Access-Control-Allow-Headers', 'Content-Type');
        next();
    });
    
    //Express routes
    app.get('/api/examples', (req, res)=> {...});
  3. 9

    Hay al menos un middleware en el mecanismo nacional de prevención para el manejo de CORS en Express: cors.

  4. 8

    Usted puede hacer esto mediante el uso de cors. cors se encargará de su CORS respuesta

    var cors = require('cors')
    
    app.use(cors());
  5. 6

    También puede agregar un middleware para agregar CORS encabezados, algo como esto:

    /**
     * Adds CORS headers to the response
     *
     * {@link https://en.wikipedia.org/wiki/Cross-origin_resource_sharing}
     * {@link http://expressjs.com/en/4x/api.html#res.set}
     * @param {object} request the Request object
     * @param {object} response the Response object
     * @param {function} next function to continue execution
     * @returns {void}
     * @example
     * <code>
     * const express = require('express');
     * const corsHeaders = require('./middleware/cors-headers');
     *
     * const app = express();
     * app.use(corsHeaders);
     * </code>
     */
    module.exports = (request, response, next) => {
        //http://expressjs.com/en/4x/api.html#res.set
        response.set({
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Methods': 'DELETE,GET,PATCH,POST,PUT',
            'Access-Control-Allow-Headers': 'Content-Type,Authorization'
        });
    
        //intercept OPTIONS method
        if(request.method === 'OPTIONS') {
            response.send(200);
        } else {
            next();
        }
    };
  6. 5

    Respuesta Corta:

    res.setHeaders – llama a los nativos Nodo método

    res.conjunto de – establece los encabezados de

    res.encabezados – un alias a la res.conjunto de

  7. 2

    @klode la respuesta es correcta.

    Sin embargo, se supone que para establecer otro encabezado de respuesta para hacer su encabezado accesible a los demás.


    Ejemplo:

    Primer lugar, se añade ‘tamaño de página’ en el encabezado de respuesta

    response.set('page-size', 20);

    Entonces, todo lo que necesitas hacer es exponer a su cabecera

    response.set('Access-Control-Expose-Headers', 'page-size')
    • Me he quedado atrapado durante más de una hora tratando de averiguar por qué ninguno de mis encabezados personalizados estaban haciendo hasta el otro extremo. Exposición de ellos fue la respuesta. Muchas gracias! ¿Por qué este encabezado no tiene ninguna mención explícita a la de google docs (o en cualquiera de los artículos que he leído hasta ahora sobre los encabezados personalizados) es muy desconcertante.
  8. 1

    JS:

    service.use(function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
        next();
      });

Kommentieren Sie den Artikel

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

Pruebas en línea