Acho que ler o valor CSRF do DOM não é uma boa solução, é apenas uma solução alternativa.
Aqui está um formulário no site oficial do angularJS http://docs.angularjs.org/api/ng.$http :
Como apenas o JavaScript executado em seu domínio pode ler o cookie, seu servidor pode ter certeza de que o XHR veio do JavaScript em execução no seu domínio.
Para aproveitar isso (Proteção CSRF), seu servidor precisa definir um token em um cookie de sessão legível por JavaScript chamado XSRF-TOKEN na primeira solicitação HTTP GET. Em solicitações não-GET subsequentes, o servidor pode verificar se o cookie corresponde ao cabeçalho HTTP X-XSRF-TOKEN
Aqui está minha solução com base nessas instruções:
Primeiro, defina o cookie:
# app/controllers/application_controller.rb
# Turn on request forgery protection
protect_from_forgery
after_action :set_csrf_cookie
def set_csrf_cookie
cookies['XSRF-TOKEN'] = form_authenticity_token if protect_against_forgery?
end
Em seguida, devemos verificar o token em todas as solicitações não GET.
Como o Rails já construiu com o método semelhante, podemos simplesmente substituí-lo para acrescentar nossa lógica:
# app/controllers/application_controller.rb
protected
# In Rails 4.2 and above
def verified_request?
super || valid_authenticity_token?(session, request.headers['X-XSRF-TOKEN'])
end
# In Rails 4.1 and below
def verified_request?
super || form_authenticity_token == request.headers['X-XSRF-TOKEN']
end