Python - Получить идентификатор фрагмента URL с помощью Flask - PullRequest
0 голосов
/ 01 декабря 2018

Моя программа Flask получает следующий запрос с некоторыми данными после #:

https://som.thing.com/callback#data1=XXX&data2=YYY&data3=...

И мне нужно прочитать параметр data1, но, похоже, это не работает:

@app.route("/callback")
def get_data():
    data = request.args.get("data1")
    print(data)

1 Ответ

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

Хеш URL (все, что после #) никогда не отправляется на сервер, браузер удаляет его, сохраняя эту часть URL полностью на стороне клиента.Согласно Wikipedia :

Идентификатор фрагмента функционирует иначе, чем остальная часть URI: его обработка исключительно на стороне клиента без участия веб-сервера , [...].Когда агент (например, веб-браузер) запрашивает веб-ресурс с веб-сервера, агент отправляет URI на сервер , но не отправляет фрагмент.

Это означает, что нет никакого способа извлечь его из бэкэнда, независимо от того, какую платформу вы используете, поскольку ни один из них никогда не получит этот фрагмент данных.

Вместо этого вам нужно использовать параметры запроса, поэтому ваш URL должен выглядетькак это:

https://foo.com/bar?data1=ABC&data2=XYZ

И в этом случае вы сможете получить к ним доступ, используя request.args:

from flask import request

@app.route('/bar')
def bar():
    page = request.args.get('data1', default = '', type = str)
    filter = request.args.get('data2', default = 0, type = int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...