У меня есть приложение Ionic / Angular 2, которое работает на localhost:8000
Приложение будет работать в конечном итоге на платформе браузера. Приложение вызывает API RESTFull, размещенный на моей локальной машине на https://adawy/api
, где adawy
мое имя хоста и определено в обоих hosts
файл и в apache виртуальные хосты. Серверная сторона Slim 3.
API после аутентификации возвращает JWT для использования со всеми запросами.
Моя цель — защитить токен от подделки межсайтовых запросов и межсайтовых скриптов. Сохранение токена в переменной javascript или в любой форме локального хранилища сделает JWT доступным из javascript.
Я обнаружил, что лучший способ — вернуть JWT как файл cookie HTTPOnly. Поэтому он не будет доступен из javascript и будет отправлен только браузером с любыми предстоящими запросами adawy
домен.
Я успешно вернул токен как файл cookie, но проблема в том, что файл cookie не отправляется ни с какими следующими запросами XHR.
Кроме того, я не вижу cookie в разделе Cookies Devtools.
Я знаю, что угловой может поддержать в этом вопросе, ища XSRF-TOKEN
печенье.
Это также не работает, как вы можете видеть, я установил имя куки в XSRF-TOKEN
но все же, с любым другим запросом, этот cookie не отправляется.
Интересно, как это было бы обеспечено, как если бы у angular был доступ к этому файлу cookie, как любой другой скрипт?
Вот следующий запрос, без куки. Пожалуйста, игнорируйте заголовок Authorization
как мой угловой код устанавливает его напрямую.
В моем угловом приложении я устанавливаю withCredentials: true
возможность сделать последний запрос на получение.
Обновить
Я использовал adawy.com
и у меня все еще та же проблема.
Первый ответ пытается явно установить куки в домене верхнего уровня Domain=.adawy;
(см. Set-Cookie
заголовок), что не допускается. Попробуйте установить его без домена, если можете, и посмотрите, работает ли он. В качестве альтернативы, попробуйте использовать имя хоста, на котором есть tld.
Других решений пока нет …