To nie jest bezpośrednia odpowiedź, ale raczej nieco inny kierunek projektowania:
Nie publikuj danych jako formularza, ale jako obiekt JSON, który ma być bezpośrednio odwzorowany na obiekt po stronie serwera, lub użyj zmiennej ścieżki stylu REST
Teraz wiem, że żadna opcja może nie być odpowiednia w twoim przypadku, ponieważ próbujesz przekazać klucz XSRF. Odwzorowanie go na taką zmienną ścieżkową jest okropnym projektem:
http://www.someexample.com/xsrf/{xsrfKey}
Ponieważ z natury chcesz przekazać klucz xsrf również na inną ścieżkę, /login
, /book-appointment
itd. I nie chcesz, aby Twój dość bałaganu URL
Co ciekawe, dodanie go jako pola obiektowego również nie jest właściwe, ponieważ teraz do każdego obiektu json przekazywanego do serwera należy dodać pole
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
Na pewno nie chcesz dodawać innego pola do klasy po stronie serwera, która nie ma bezpośredniego powiązania semantycznego z obiektem domeny.
Moim zdaniem najlepszym sposobem na przekazanie klucza xsrf jest nagłówek HTTP. Obsługuje to wiele bibliotek frameworku WWW po stronie serwera ochrony xsrf. Na przykład w Java Spring można przekazać go za pomocą X-CSRF-TOKEN
nagłówka .
Doskonała zdolność Angulara do wiązania obiektu JS z obiektem interfejsu użytkownika oznacza, że możemy pozbyć się praktyki wysyłania formularza razem i zamiast tego publikować JSON. JSON można łatwo przekształcić do postaci szeregowej w obiekt po stronie serwera i obsługiwać złożone struktury danych, takie jak mapa, tablice, obiekty zagnieżdżone itp.
Jak zamieszczasz tablicę w formularzu? Może tak:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
albo to:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
Oba są kiepskie.