Це не пряма відповідь, а дещо інший напрямок дизайну:
Не публікуйте дані як форму, а як об'єкт JSON, безпосередньо підключений до об'єкта на стороні сервера, або використовуйте змінну шляху стилю REST
Тепер я знаю, що жоден варіант не підходить у вашому випадку, оскільки ви намагаєтесь передати ключ XSRF. Зображення його в змінну контуру на зразок цієї страшної конструкції:
http://www.someexample.com/xsrf/{xsrfKey}
Тому що за своєю природою ви хочете передати ключ xsrf в інший шлях /login
і /book-appointment
т. Д., І ви не хочете зіпсувати свою гарну URL-адресу
Цікаво, що додавання його в поле об'єкта також не підходить, оскільки тепер для кожного з об’єктів json, який ви переходите на сервер, ви повинні додати поле
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
Ви, звичайно, не хочете додавати інше поле у свій серверний клас, яке не має прямої семантичної асоціації з об’єктом домену.
На мою думку, найкращий спосіб передавати ваш ключ xsrf - через заголовок HTTP. Багато бібліотеки веб-фреймворків захисту xsrf підтримують це. Наприклад, у Java Spring, ви можете передати його за допомогою X-CSRF-TOKEN
заголовка .
Відмінна здатність Angular зв’язувати JS-об'єкт з об'єктом інтерфейсу означає, що ми можемо позбутися практики розміщення форми разом і замість цього розмістити JSON. JSON можна легко десериалізувати на об’єкт на сервері та підтримувати складні структури даних, такі як карта, масиви, вкладені об'єкти тощо.
Як розміщувати масив у корисному навантаженні форми? Можливо так:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
або це:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
Обидва мають поганий дизайн ..