Necesito para preservar los datos POST a una url diferente

La reescritura de obras, pero el post se pierden los datos

necesidad de publicar los datos de user_info.php a userhistory

 location  ~ user_info.php {
  rewrite ^/.* http://testing.com/userhistory  permanent;
 }

La pérdida de los datos. ¿Cómo puedo conservar los datos?

OriginalEl autor meWantToLearn | 2015-01-06

3 Comentarios

  1. 2

    Básicamente, usted desea redirigir automáticamente una solicitud POST usando un 301 Movido Permanentemente redirección.

    Sin embargo. reorientar esos son específicamente rechazado por la Especificaciones HTTP que establece que:

    Si el código de estado 301 es recibido en respuesta a una solicitud que no se ni CABEZA, el agente de usuario NO DEBE redirigir automáticamente la solicitud, a menos que pueda ser confirmado por el usuario, ya que esto puede cambiar las condiciones en que se hizo la petición.

    Las especificaciones también tenga en cuenta que:

    Al redirigir automáticamente una solicitud POST después de recibir un código de estado 301, algunos ya existentes HTTP/1.0 agentes de usuario erróneamente cambio, en una solicitud GET.

    Yo creo que la segunda situación puede ser lo que está pasando y que mientras que el servidor de destino está a la espera de datos de envío, la recepción de OBTENER datos en su lugar.

    Sus opciones son:

    A. Cambiar el código para que funcione con OBTENER datos o, mejor aún, ambos POST y GET. I. E., busca el POST y si no, tratar de CONSEGUIR equivalentes.

    B. Tratar de asegurarse de que el código recibe POSTERIOR de los datos mediante el trabajo con la Especificación.

    Usted puede ser capaz de lograr la Elección de B mediante la proxy_pass directiva para gestionar la petición.

    Algo como:

    location  ~ user_info.php {
        proxy_pass http://testing.com/userhistory;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    De esta manera, el usuario es técnicamente no es redirigida.

    gracias, ahora mismo estoy enviando los datos de entrada a través de la curvatura.

    OriginalEl autor Dayo

  2. 3

    Sólo tienes que escribir un Nginx regla de reescritura con el código de estado HTTP 307 o 308:

    location  ~ user_info.php {
      return 307 http://testing.com/userhistory;
    }

    Código de Estado Http 307 o 308 debe ser utilizado en lugar de 301 porque cambia el método de solicitud de enviar a CONSEGUIR. Consulte
    https://tools.ietf.org/id/draft-reschke-http-status-308-07.html#introduction

    También redirigir a través de return es mejor en comparación a rewrite de acuerdo a nginx doc: https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites

    OriginalEl autor Amit Thawait

  3. 2

    En mi conf yo uso try_files con regex

    por ejemplo

    location /yourfolder/(?<specialRequest>.*) {
        try_files $uri /yourfolder/index.php?r=$specialRequest;
        return 307 https://$host/yourfolder/index.php?r=$specialRequest; //it also work
    }

    OriginalEl autor Peter Lai

Dejar respuesta

Please enter your comment!
Please enter your name here