2014-02-18 6 views
2

플라스크 URL 매개 변수로 사용자가 지정한 문자열을 전달하려고합니다. url_for(func_name, param="string with spaces") 또는 유사 URL은 공백이있는 URL을 생성합니다.플라스크 URL 매개 변수 공백이 포함 된 URL을 생성합니다.

사용자가 공백이있는 문자열을 입력하면 생성 된 URL에 공백이 생깁니다.

또한 URL을 %20으로 입력하면 URL이 공백으로 리디렉션되는 것으로 보입니다. 공백이있는 URL은 좋지 않다고 생각했습니다.

어떻게 제대로 작동합니까 (url_for 및 리디렉션)? 아니면 그냥 받아 들여야합니까?

P. 매개 변수로 사용자가 제공 한 문자열을 전달하고 있습니까? 만약 내가 어떻게 사용자 입력 문자열을 위생해야합니까?

+0

이것은 공백을 보여주는 브라우저입니다. 모든 것이 의도 한대로 작동합니다. –

답변

2

아니요, Flask는 URL 인코딩이 된 URL을 올바르게 생성합니다. 기존의 응용 프로그램과 함께 시연 :

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

귀하의 브라우저을 다른 한편으로하는 읽기 쉽 디코딩 등의 URL을 표시하도록 선택할 수 있습니다.

url_for() 인용문은 URL로부터 안전합니다. 인코딩 된 URL은 HTML로 해석 될 수있는 값을 포함 할 수 없으므로 사용자가 제공 한 값에 관해서는 안전합니다.

+0

난 그냥 복사/붙여 넣기를 시도하고 당신이 옳은 것 같습니다. OTOH 내가 임의의 정크를 끝에 추가하면 내 404 페이지에 request.url에 % 20 %가 아닌 공간이 표시됩니다. 기묘한. –