Flask сеанс не сохраняется - PullRequest
0 голосов
/ 09 марта 2020

Хорошо, ребята, я уже 3 часа врезаюсь головой в стену и до сих пор не могу найти решение. Итак, вот мой сценарий. Я разработал приложение для Shopify, в котором для отображения моего приложения используется iframe. Я использую сеанс Flask для сохранения текущего имени пользователя по какой-то причине на моем компьютере (я не имею в виду localhost, я имею в виду браузер на моем p c), он не работает в chrome, он работает на других компьютеры, и он действительно работает в других браузерах, просто для демонстрации. Вот код

  app.secret_key = "some secret key"
  @blueprint.route("/shopify")
  def shopify_entry():
    session["SHOP_NAME"] = shop_name
    logging.info(f"Session keys {session.keys()}") #!!!! All good it has a value
    return render_template("gen/index.html")

Для клиентской стороны я использую Vue. js, когда индекс. html загружает, делает запрос REST для данных магазина есть часть, которая должна возвращать эти данные

@blueprint.route("/get_shop_settings")
def get_shop_settings():
    logging.info(f"Session keys {session.keys()}") #!!!! Why is this empty
    shop_name = session[SHOP_NAME]#This will throw an exception !!!!
    shop_info = extract_shop_settings_for_ui(get_shop(shop_name))
    logging.info(f"Returning shop data {shop_info}")
    return shop_info

Обратите внимание, что она работает в firefox и работает на другом компьютере в той же версии Crome, но на моем P C она не работает даже если я переключусь на Инкогнито, он работал в течение полугода, но теперь он внезапно прекратился. И самое странное, что сессионный повар ie создан

1 Ответ

0 голосов
/ 10 марта 2020

Нашел решение при использовании iframe. chrome сохранит свои куки-файлы только в том случае, если для сеанса SameSite задана строка «Нет» и он защищен от того, кто бы ни боролся с той же проблемой, вам нужно сначала сделать две вещи: Конфигурация приложения выглядит следующим образом:

app = Flask(__name__, template_folder="../templates", static_folder="../static")
app.config.update(SESSION_COOKIE_SAMESITE="None", SESSION_COOKIE_SECURE=True)

, а во-вторых, вам нужно обновить библиотеку Werkzeug до версии 1.0.0 или выше

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