2014-02-18 2 views
2

Я пытаюсь передать строку, предоставленную пользователем, в качестве параметра URL-адреса флажка. url_for(func_name, param="string with spaces") или аналогичный код генерирует URL-адрес с пробелами.Параметры указателя колбы с пробелами генерируют URL-адреса с пробелами

Если пользователь вводит строку с пробелами, сгенерированный url имеет пробелы, это, кажется, работает.

Также, если я ввожу URL-адрес с %20, он, похоже, перенаправляет URL-адрес с пробелами. Я думал, что URL-адреса с пробелами - плохая идея.

Как это сделать правильно (url_for и перенаправление)? Или я должен просто принять его?

P.S. Передача строки, предоставленной пользователем, в качестве безопасного параметра? Если нет, как я должен дезинфицировать строку ввода пользователя?

+0

Это ваш браузер, показывающий пространства; все работает по назначению. –

ответ

2

Нет, Flask генерирует URL-адреса, правильно закодированные URL; с записью демо существующего приложением:

>>> with app.test_request_context('/'): 
...  print url_for('core.city', city='new york') 
... 
/new%20york 

Вашего браузера с другой стороны, может выбрать, чтобы показать такие адреса декодированных для удобства чтения.

url_for() вводит ввод в URL-адрес; закодированные URL-адреса не могут содержать значения, которые могут быть интерпретированы как HTML, поэтому вы можете быть уверены в том, что это касается значений, заданных пользователем.

+0

Я просто пытаюсь скопировать/вставить, и похоже, что вы правы. OTOH, когда я добавляю случайный мусор до конца моей страницы 404, которая отображает request.url, имеет место не% 20 с. Weird. –

Смежные вопросы