Si vous utilisez la valeur par défaut de Rails de protection CSRF (<%= csrf_meta_tags %>
), vous pouvez configurer votre Angulaire module comme ceci:
myAngularApp.config ["$httpProvider", ($httpProvider) ->
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
]
Ou, si vous n'êtes pas à l'aide de CoffeeScript (quoi!?):
myAngularApp.config([
"$httpProvider", function($httpProvider) {
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content');
}
]);
Si vous préférez, vous pouvez envoyer l'en-tête uniquement sur les demandes non-GET avec quelque chose comme ce qui suit:
myAngularApp.config ["$httpProvider", ($httpProvider) ->
csrfToken = $('meta[name=csrf-token]').attr('content')
$httpProvider.defaults.headers.post['X-CSRF-Token'] = csrfToken
$httpProvider.defaults.headers.put['X-CSRF-Token'] = csrfToken
$httpProvider.defaults.headers.patch['X-CSRF-Token'] = csrfToken
$httpProvider.defaults.headers.delete['X-CSRF-Token'] = csrfToken
]
Aussi, assurez-vous de vérifier HungYuHei réponse, qui couvre toutes les bases sur le serveur plutôt que sur le client.