2012-03-01 34 views

Respuesta

33

No se puede hacer - AFAIK.

Sin embargo, puede usar por ejemplo jquery (aunque puede hacerlo con javascript simple) para serializar el formulario y enviarlo (usando AJAX) mientras agrega su encabezado personalizado.

Mire el jquery serialize que cambia un FORMATO HTML en form-url-encoded valores listos para POST.

ACTUALIZACIÓN

Mi sugerencia es que incluyen ya sea

  • una forma oculta parámetro elemento
  • una cadena de consulta
+1

No puedo usar ajax en este caso. De alguna manera, estoy publicando y redirigiendo a una página aspx. La redirección es por From Post. –

+1

Mi sugerencia es incluir 1) un elemento de formulario oculto 2) un parámetro de cadena de consulta – Aliostad

+1

¿Se pueden serializar archivos? Pensé: No. – Fallenreaper

1

Usted podría utilizar $ .ajax para evitar el comportamiento natural de <form method="POST">. Podría, por ejemplo, agregar un evento al botón de envío y tratar la solicitud POST como AJAX.

+1

Utilizo este formulario para * redirigir * a una página aspx y publico algunos datos. –

+0

me hacen entender mejor: 1) mensajes de usuario 2) datos de ahorro 3) redirigir. ¿Es lo que haces? –

+0

Tengo un iFrame en una página Html (Fuente), que apunta a otra página html (Proxy). La página de proxy publica algún parámetro (No Get) a través de un elemento de formulario. Redirección y publicación en el envío del formulario. Recupero los parámetros publicados en la página aspx como destino. –

10

Establezca un valor de cookie en la página, y luego léelo del lado del servidor.

No podrá establecer un encabezado específico, pero se podrá acceder al valor en la sección de encabezados y no en el cuerpo del contenido.

3

De FormData documantion:

XMLHttpRequest Nivel 2 añade soporte para la nueva interfaz FormData. Los objetos FormData proporcionan una manera de construir fácilmente un conjunto de pares clave/valor que representan campos de formulario y sus valores, que luego pueden enviarse fácilmente utilizando el método XMLHttpRequestsend().

Con una XMLHttpRequest puede establecer las cabeceras personalizadas y luego hacer lo POST.

1

Esto es lo que hice en pub/jade

extends layout 
block content 
    script(src="/jquery/dist/jquery.js") 
    script. 
     function doThePost() { 
     var jqXHR = $.ajax({ 
      type:'post' 
      , url:<blabla> 
      , headers: { 
       'x-custom1': 'blabla' 
       , 'x-custom2': 'blabla' 
       , 'content-type': 'application/json' 
      } 
      , data: { 
       'id': 123456, blabla 
      } 
     }) 
     .done(function(data, status, req) { console.log("done", data, status, req); }) 
     .fail(function(req, status, err) { console.log("fail", req, status, err); }); 
     } 
    h1= title 
    button(onclick='doThePost()') Click 
1

De hecho una mejor manera de hacerlo para guardar una cookie en el lado del cliente. Luego, la cookie se envía automáticamente con cada encabezado de página para ese dominio en particular. por ejemplo, en el nodo-js, se puede establecer una cookie de esta manera:

res.cookie('token', "xyz....", { httpOnly: true }); 

Ahora se puede acceder a este:

app.get('/',function(req, res){ 
var token = req.cookies.token 
}); 

Tenga en cuenta que httpOnly:true asegura que la cookie normalmente no es accesible de forma manual o por medio de javascript y solo el navegador puede acceder a él. Si desea enviar algunos encabezados o tokens de seguridad con una publicación de formulario, y no a través de ajax, en la mayoría de las situaciones esto se puede considerar una forma segura. Aunque asegúrese de que los datos se envían a través de protocolo/ssl seguro si está almacenando información sensible relacionada con el usuario, que suele ser el caso.

Cuestiones relacionadas