2012-03-01 9 views

Odpowiedz

33

Nie można tego zrobić - AFAIK.

Można jednak użyć na przykład jquery (chociaż można to zrobić za pomocą zwykłego javascript), aby serializować formularz i wysłać (przy pomocy AJAX) podczas dodawania własnego nagłówka.

Zobacz jquery serialize, która zmienia FORMULARZ HTML w wartości form-url-encoded gotowe do testu POST.

UPDATE

Moja propozycja jest włączenie albo

  • ukryta forma parametr elementem
  • ciąg kwerendy
+1

Nie mogę użyć ajaxa w tym przypadku. Jakimś sposobem jestem Post i przekierowanie do strony aspx. Przekierowanie jest realizowane przez Post From. –

+1

Moja sugestia to uwzględnienie 1) ukrytego elementu formularza 2) parametru ciągu zapytania – Aliostad

+1

Czy można szeregować pliki? Pomyślałem: No. – Fallenreaper

1

Można użyć $ .ajax uniknąć naturalne zachowanie <form method="POST">. Można na przykład dodać zdarzenie do przycisku przesyłania i potraktować żądanie POST jako AJAX.

+1

Korzystam z tego formularza do przekierowania * na stronę aspx i opublikowania niektórych danych. –

+0

lepiej zrozum mnie: 1) posty użytkowników 2) zapisywanie danych 3) przekierowanie. Czy to co robisz? –

+0

Mam element iFrame na stronie HTML (źródło), wskazując na inną stronę html (serwer proxy). Strona proxy wyświetla jakiś parametr (bez pobierania) za pośrednictwem elementu formularza. Przekierowanie i wpis odbywa się na formularzu przesłanym. Pobieram opublikowane parametry na stronie aspx jako miejsce docelowe. –

10

Ustaw wartość cookie na stronie, a następnie odczytaj ją po stronie serwera.

Nie można ustawić określonego nagłówka, ale wartość będzie dostępna w sekcji nagłówków, a nie w treści treści.

3

Od FormData documantion:

XMLHttpRequest Level 2 dodaje wsparcie dla nowego interfejsu FormData. Obiekty FormData umożliwiają łatwe skonstruowanie zestawu par klucz/wartość reprezentujących pola formularza i ich wartości, które można następnie łatwo wysłać przy użyciu metody.

Za pomocą XMLHttpRequest można ustawić niestandardowe nagłówki, a następnie wykonać POST.

1

Oto co zrobiłem w 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

W rzeczywistości lepszy sposób to zrobić, aby zapisać plik cookie na stronie klienta. Następnie plik cookie jest wysyłany automatycznie wraz z każdym nagłówkiem strony dla danej domeny. na przykład w węźle-js można ustawić cookie w ten sposób:

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

Teraz można uzyskać dostęp do tego:

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

Zauważ, że httpOnly:true gwarantuje, że plik cookie nie jest zwykle dostępny ręcznie lub poprzez javascript i tylko przeglądarka może uzyskać do niego dostęp. Jeśli chcesz wysłać niektóre nagłówki lub tokeny zabezpieczające za pomocą formularza, a nie za pośrednictwem ajax, w większości sytuacji można to uznać za bezpieczny sposób. Mimo to upewnij się, że dane są przesyłane przez bezpieczny protokół/ssl, jeśli przechowujesz poufne informacje dotyczące użytkownika, co zwykle ma miejsce.

Powiązane problemy