Привет, я пытаюсь передать URL-адрес внутри метода Flask,
My url: https://example.org/de?=fg&hi=jk
Я попробовал следующие шаги:
@app.route('/flip/<path:url>')
def flip(url):
return "retrievved url:"+str(url)
calling the url : localhost:8200//flip/https://example.org/de?=fg&hi=jk
returns : 'https://example.org/de'
and another method,
@app.route('/flip')
def flip(url):
url=request.args.get('url')
return "retrievved url:"+str(url)
calling the url: localhost:8200//flip?url=https://example.org/de?=fg&hi=jk
returns : 'https://example.org/de?=fg'
Мой ожидаемый результат должен вернуть весь URL-адрес, который мы передаем https://example.org/de?=fg&hi=jk
Пожалуйста, помогите, спасибо заранее
Это не имеет никакого отношения к Flask. Ваши URL-адреса не означают, что вы думаете о них.
Например, этот URL:
localhost:8200//flip?url=https://example.org/de?=fg&hi=jk
... имеет два параметра запроса:
url=https://example.org/de?=fg
hi=jk
Параметр &
отделяет параметры запроса от внешнего запроса, поэтому он имеет отдельные параметры url
и hi
.
Кроме того, незаконно использовать многие из этих символов в параметре запроса, но вы часто избегаете его.
Вот почему веб-сайты, которые должны внедрять URL-адреса внутри других URL-адресов, используют процентную кодировку. Ваша страница должна быть отправлена:
localhost:8200//flip?url=https%3A//example.org/de%3F%3Dfg%26hi%3Djk
Теперь есть только один параметр запроса:
url=https%3A//example.org/de%3F%3Dfg%26hi%3Djk
И затем, когда вы разбираете строку запроса, вы получаете:
url=https://example.org/de?=fg&hi=jk
Если вы действительно не можете исправить ситуацию на стороне клиента, вы можете выполнить итерацию всех параметров запроса и попытаться собрать их в один параметр url
.
Или вы можете получить весь URL-адрес (request.url
вместо request.args
) и вручную выполнить его вручную, вместо того, чтобы позволить Flask или Python сделать это за вас.
Но в любом случае, это действительно взломанно, и вы не должны его рассматривать, если это абсолютно необходимо.
Кроме того, ваш URL-адрес является незаконным, и вы не хотите полагаться на "вы часто избегаете его". Если не приемлемо, что, скажем, некоторые пользователи не смогут подключиться, потому что их прокси-сервер закручивает URL-адреса, и вы провели все выходные, ударяя головой по столу, пытаясь отладить его, а затем он работает для некоторых из них, но немногие теперь получают неправильные страницы, а затем новая версия Chrome внезапно ломает что-то другое, и...
HTTP достаточно сложный и достаточно грязный, когда вы придерживаетесь стандартов, тем более, что ваш каркас делает большую часть тяжелой работы для вас.