У меня есть этот REST сервис на domainA
:
@CrossOrigin(origins={"http://domainB"})
@RequestMapping(value="/csrf", method=RequestMethod.GET)
public @ResponseBody
CsrfToken getCsrfToken(HttpServletRequest request) {
CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName());
return token;
}
Затем я хочу получить токен CSRF из вышеуказанного сервиса (используя javascript на domainB
) и добавить его к <form action="http://domainA>
на domainB
и отправить эту форму на domainA
(это простая форма, которая имеет кнопка отправки).
Проблема в том, что я получаю HTTP-статус 403 - запрещено.
Как наоборот: когда я вручную устанавливаю значение _csrf
(полученное вручную на другой вкладке браузера, указывающего на domainA/csrf
) в <form action="http://domainA>
и отправляю его, оно работает.
Разница, которую я заметил, заключается в том, что когда я вручную обновляю вкладку браузера domainA/csrf
, тогда я получаю постоянно одно и то же значение (и это значение работает), но когда domainA/csrf
получается с помощью javascript из domainB
, это каждый раз отличается и при его использовании - не работает.
Может кто-нибудь помочь?
домен A: www.fridayweekend.com/rest/csrf
domainB: www.friwee.com/register (нажмите F12 и посмотрите, какой звонок на www.fridayweekend.com/rest/csrf вернется ....)