これは直接的な回答ではなく、少し異なる設計の方向性です。
データをフォームとして投稿するのではなく、サーバー側オブジェクトに直接マッピングされるJSONオブジェクトとして投稿するか、RESTスタイルのパス変数を使用します
XSRFキーを渡そうとしているので、どちらのオプションもあなたのケースに適していないかもしれません。このようなパス変数へのマッピングはひどい設計です:
http://www.someexample.com/xsrf/{xsrfKey}
自然にあなたは、あまりにも他のパスにXSRFの鍵を渡したいと思うので/login
、/book-appointment
など、あなたが混乱にあなたのきれいなURLを望んでいません
興味深いことに、オブジェクトフィールドとして追加することも適切ではありません。サーバーに渡す各jsonオブジェクトで、フィールドを追加する必要があるためです。
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
ドメインオブジェクトとの直接のセマンティックアソシエーションを持たない別のフィールドをサーバー側クラスに追加したくないのは確かです。
私の意見では、xsrfキーを渡す最善の方法は、HTTPヘッダーを使用することです。多くのxsrf保護サーバー側Webフレームワークライブラリがこれをサポートしています。たとえば、Java Springでは、X-CSRF-TOKEN
header を使用して渡すことができます。
AngularのJSオブジェクトをUIオブジェクトにバインドする優れた機能は、フォームをすべて一緒に投稿するという習慣をなくし、代わりにJSONを投稿できることを意味します。JSONはサーバー側オブジェクトに簡単にデシリアライズでき、マップ、配列、ネストされたオブジェクトなどの複雑なデータ構造をサポートします。
配列をフォームペイロードにどのように投稿しますか?多分このように:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
またはこれ:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
どちらもデザインが悪いです。