Если вы хотите провести фоновое чтение, то я предлагаю вам поискать руководства по CORS (совместное использование ресурсов из разных источников) и, в частности, как установить файлы cookie при использовании CORS.
Используя исходный код, вы Нужно изменить его на withCredentials
на true
:
let response = await axios({
method: 'post',
url: 'http://127.0.0.1:3000/api/login', // my Node server on 3000 port
data: {
email : login,
password: password,
},
withCredentials: true
})
За кулисами будет установлен флаг withCredentials
на XMLHttpRequest
:
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials
В консоли вы получите ошибки CORS. Если вы преодолеете эти ошибки, вы сможете заставить их работать. Эти ошибки будут включать ...
Во-первых, сервер должен будет вернуть заголовок Access-Control-Allow-Credentials: true
. Это также относится к предварительному запросу OPTIONS.
Во-вторых, в настоящее время вы используете Access-Control-Allow-Origin: *
, но это не разрешено для запросов с использованием учетных данных. Это должно быть Access-Control-Allow-Origin: http://www.example.com
. Аналогично для предварительной проверки.
На этом этапе значение повара ie должно быть установлено в большинстве браузеров (подробнее о нюансах браузера позже).
Для добавления файлов cookie в последующие запросы вы также необходимо установить withCredentials: true
для этих запросов. Другие изменения заголовка, изложенные выше, также должны быть применены. Файлы cookie не будут включены в предварительный запрос, только основной запрос.
Просмотр файлов cookie в инструментах разработчика браузера не совсем прост. Как правило, инструменты показывают файлы cookie, установленные для того же источника, что и текущая страница, которая не включает файлы cookie, установленные с помощью запросов CORS. Чтобы просмотреть эти файлы cookie, вам нужно открыть другую вкладку браузера и задать URL-адрес, начинающийся с того же источника, что и запрос CORS. Но будьте осторожны, вам нужно выбрать URL, который не устанавливает сами куки, иначе это ничего не доказывает.
Еще один способ проверить, какие куки установлены, - отправить другой запрос (с помощью withCredentials
) и посмотрите, какие cookie-файлы отправляются.
Тогда у нас есть определенные браузером c проблемы ...
В Safari действительно трудно получить cookie-файлы для установки через CORS. Если Safari является целевым браузером для вас, я предлагаю провести дальнейшее исследование этого вопроса.
Во-вторых, Chrome 80 должен существенно изменить правила использования файлов cookie CORS. См .:
https://www.chromium.org/updates/same-site
Вы уже увидите предупреждения об этом в своей консоли с более старыми версиями Chrome. Короче говоря, файлы cookie CORS нужно будет обслуживать в течение https
и устанавливать директивы Secure
и SameSite=None
.