Как установить cookie с веб-сервера Flask - PullRequest
0 голосов
/ 25 декабря 2018

У меня возникла проблема, когда я создал веб-сервер Flask, который я разместил на Heroku, и который включает в себя функцию, которая хранит куки в Chrome.

Функция для хранения куки выглядит следующим образом:

@app.route('/api/v1.0/setcookie', methods=['GET'])
def setcookie():
    series = str(np.random.randint(10**8, 10**9))
    token = str(np.random.randint(10**8, 10**9)).encode('utf-8')
    hashed_token = hashlib.sha256(token).hexdigest()
    resp = make_response()
    resp.set_cookie('huga_series_id', series, max_age=60*60*24*365*5)
    resp.set_cookie('huga_series_token', token, max_age=60*60*24*365*5)
    cookies = mongo.db.cookies
    cookies.insert({'series': series, 
        'token': hashed_token})
    return resp

Эта функция является частью веб-сервера Flask, размещенного по адресу https://my -server-name.herokuapp.com / .

Вот проблема: когда я захожу на URL https://my -server-name.herokuapp.com / api / v1.0 / setcookie , cookie должным образом сохраняется в моем браузере Chrome.Однако, если я попытаюсь отправить запрос GET на этот URL-адрес из Javascript с использованием XMLHTTTPREQUEST следующим образом:

    var xxhttp = new XMLHttpRequest();
    xxhttp.open("GET", "https://my-server-name.herokuapp.com//api/v1.0/setcookie", true);
    xxhttp.send();

Файлы cookie не сохраняются.Я провел тестирование и уверен, что все - отправка XMLHttpRequest, код Python и т. Д. Работает.Единственное различие между этими двумя методами состоит в том, что я отправляю запрос GET через Javascript в одном и вручную посещаю URL-адрес в другом.

Есть какие-либо идеи о том, как я могу хранить файлы cookie в Chrome с помощью XMLHttpRequest?

Спасибо!

1 Ответ

0 голосов
/ 26 декабря 2018

Для начала попробуйте использовать Fetch API .Если вы также должны поддерживать старые браузеры, используйте this poly-fill .Ваша проблема с XMLHttpRequest, вероятно, связана с тем, что вы не указали путь при установке файла cookie (существуют некоторые неожиданные правила, как это работает).Вместо того, чтобы пытаться исправить это с помощью старого API, используйте лучший API Fetch и прочитайте это о настройке файлов cookie .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...