Jak ustawić niestandardowe pole w nagłówku POST przy wysyłaniu formularza?Jak ustawić pole nagłówka na formularzu POST?
Odpowiedz
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
Nie mogę użyć ajaxa w tym przypadku. Jakimś sposobem jestem Post i przekierowanie do strony aspx. Przekierowanie jest realizowane przez Post From. –
Moja sugestia to uwzględnienie 1) ukrytego elementu formularza 2) parametru ciągu zapytania – Aliostad
Czy można szeregować pliki? Pomyślałem: No. – Fallenreaper
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.
Korzystam z tego formularza do przekierowania * na stronę aspx i opublikowania niektórych danych. –
lepiej zrozum mnie: 1) posty użytkowników 2) zapisywanie danych 3) przekierowanie. Czy to co robisz? –
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. –
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.
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
.
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
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.
Używając 'XmlHttpRequest' masz na myśli? Lub zwykły post HTML FORM? – Aliostad
nie, używam działania formularza: post –
Nie można tego zrobić - AFAIK. – Aliostad