Можно ли обслуживать интерфейс с помощью совершенно другого IP-адреса с включенной функцией CSRF?
Прежде чем столкнуться с этой проблемой, я думал, что все должно работать без сбоев. Но теперь я сталкиваюсь с проблемой, о которой я никогда не думал раньше.
У меня есть два сервера, один интерфейс и один сервер. Эти два имеют разные адреса; 192.168.2.10:8080
а также localhost:4200
, Бэкэнд реализован в Java+Spring, а внешний интерфейс - Angualr2 (не так уж важно, но пока). И, конечно, я мог бы легко обслуживать их обоих с локального хоста, и это только для проверки. На самом деле, если я буду обслуживать их обоих от localhost, я не столкнусь с проблемой, которую собираюсь описать.
В моем бэкэнде включена функция CSRF, что означает, что для каждого POST-запроса (и некоторых других методов) ему необходимы cookie и заголовок, которые должны присутствовать и соответствовать друг другу (XSRF-TOKEN
печенье и X-XSRF-TOKEN
заголовок). Проблема в том, что когда я выполняю Ajax-вызовы на свой сервер, X-XSRF-TOKEN
не заполнен должным образом.
Когда я открываю POST-запрос на вкладке Network, я вижу, что cookie-файл отправляется на внутренний сервер, как и должно быть. Но пока нет X-XSRF-TOKEN
заголовок, сопровождающий запрос.
И да, я установил withCredentials
свойство к истине. Как я уже сказал, все работает нормально, если оба сервера имеют один и тот же IP-адрес. Я думаю, что проблема заключается в том, что, поскольку cookie-файл установлен для другого адреса, объект XMLHttpRequest не может получить к нему доступ, чтобы включить его в качестве заголовка, что для меня обидно.
Итак, возможно ли обслуживать интерфейс с помощью совершенно другого IP-адреса с включенной функцией CSRF и без использования прокси-сервера?