Esta não é uma resposta direta, mas uma direção de design um pouco diferente:
Não publique os dados como um formulário, mas como um objeto JSON para ser mapeado diretamente para o objeto do lado do servidor ou use a variável de caminho de estilo REST
Agora eu sei que nenhuma opção pode ser adequada no seu caso, pois você está tentando passar uma chave XSRF. Mapear isso em uma variável de caminho como esta é um design terrível:
http://www.someexample.com/xsrf/{xsrfKey}
Porque, por natureza, você gostaria de passar a chave xsrf para outro caminho também /login
, /book-appointment
etc. , e não quer mexer na sua URL bonita
Curiosamente, adicioná-lo como um campo de objeto também não é apropriado, porque agora em cada objeto json que você passa para o servidor, é necessário adicionar o campo
{
appointmentId : 23,
name : 'Joe Citizen',
xsrf : '...'
}
Você certamente não deseja adicionar outro campo à sua classe do servidor que não tenha uma associação semântica direta com o objeto de domínio.
Na minha opinião, a melhor maneira de passar sua chave xsrf é através de um cabeçalho HTTP. Muitas bibliotecas de estruturas da web do lado do servidor do xsrf protection suportam isso. Por exemplo, no Java Spring, você pode transmiti-lo usando o X-CSRF-TOKEN
cabeçalho .
A excelente capacidade do Angular de vincular o objeto JS ao objeto da interface do usuário significa que podemos nos livrar da prática de postar todos os formulários juntos e, em vez disso, publicar o JSON. O JSON pode ser facilmente desserializado no objeto do lado do servidor e suportar estruturas de dados complexas, como mapa, matrizes, objetos aninhados, etc.
Como você publica uma matriz em uma carga útil de formulário? Talvez assim:
shopLocation=downtown&daysOpen=Monday&daysOpen=Tuesday&daysOpen=Wednesday
ou isto:
shopLocation=downtwon&daysOpen=Monday,Tuesday,Wednesday
Ambos têm um design ruim.