Đây không phải là một câu trả lời trực tiếp, mà là một hướng thiết kế hơi khác:
Không đăng dữ liệu dưới dạng biểu mẫu, nhưng dưới dạng đối tượng JSON được ánh xạ trực tiếp vào đối tượng phía máy chủ hoặc sử dụng biến đường dẫn kiểu REST
Bây giờ tôi biết không có tùy chọn nào có thể phù hợp trong trường hợp của bạn vì bạn đang cố vượt qua khóa XSRF. Ánh xạ nó vào một biến đường dẫn như thế này là một thiết kế khủng khiếp:
http://www.someexample.com/xsrf/{xsrfKey}
Bởi vì về bản chất, bạn cũng muốn chuyển khóa xsrf sang đường dẫn khác /login
,/book-appointment
v.v. và bạn không muốn làm URL đẹp của mình
Thật thú vị khi thêm nó dưới dạng một trường đối tượng cũng không phù hợp, bởi vì bây giờ trên mỗi đối tượng json bạn chuyển đến máy chủ, bạn phải thêm trường
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
Bạn chắc chắn không muốn thêm một trường khác vào lớp phía máy chủ không có liên kết ngữ nghĩa trực tiếp với đối tượng miền.
Theo tôi, cách tốt nhất để vượt qua khóa xsrf của bạn là thông qua tiêu đề HTTP. Nhiều thư viện khung web phía máy chủ bảo vệ xsrf hỗ trợ này. Ví dụ: trong Java Spring, bạn có thể chuyển nó bằng X-CSRF-TOKEN
tiêu đề .
Khả năng tuyệt vời của Angular trong việc ràng buộc đối tượng JS với đối tượng UI có nghĩa là chúng ta có thể thoát khỏi thực tiễn đăng mẫu cùng nhau và thay vào đó đăng JSON. JSON có thể dễ dàng được tuần tự hóa thành đối tượng phía máy chủ và hỗ trợ các cấu trúc dữ liệu phức tạp như bản đồ, mảng, các đối tượng lồng nhau, v.v.
Làm thế nào để bạn gửi mảng trong một tải trọng mẫu? Có lẽ như thế này:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
hoặc này:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
Cả hai đều có thiết kế kém ..