我使用外掛架,以及一些我的網址中含有非英文字符,如:如何重定向到非英文字符的網址?
http://localhost:5000/article/111/文章標題
在大多數情況下,它不會是一個問題,但在我的登錄模塊,用戶之後已經註銷,我嘗試從request.headers
獲得referer
,並重定向到該URL。
if user_logout:
referer = request.headers.get('referer', '/')
redirect(referer)
Unforunately,如果URL中含有非英文字符,並與IE的布勞爾,它會報告這樣的錯誤(Firefox是OK):
WebError Traceback:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd5 in position 140: ordinal not in range(128)
View as: Interactive (full) | Text (full) | XML (full) clear this
clear this
URL: http://localhost:5000/users/logout
Module weberror.evalexception:431 in respond view
有辦法解決它(但不好),請使用urllib.quote()
在重定向之前轉換網址。
referer = quote_path(url) # only quote the path of the url
redirect(referer)
這不是一個好的解決方案,因爲它只適用於瀏覽器是IE瀏覽器,而且非常無聊。有沒有什麼好的解決方案?
這是正確的做法,你應該在URL中編碼每個非ASCII字符。它在HTTP規範中。 – giolekva 2010-09-07 07:11:15