фронтенд у тебя все правильно делает
options сам браузер отправляет
убей свой сервер и посмотри nc -lp 3500
бэкенд должен заголовками ответить что все норм
https://developer.mozilla.org/en-US/docs/Web/HTTP/...чтобы на бек-энд приходил application/json ?
последний параметр не правильный у тебя
post("http://localhost:3500/login", JSON.stringify({ email: email, password: password }), {headers: this.headers})