我正在將舊系統重新實現爲燒瓶應用程序,並且必須保持網址模式不變。其中一個網址直接包含用戶的完整電子郵件地址(換句話說,電子郵件地址是url的一部分,而不是GET參數)。燒瓶重定向請求到包含'@'的網址
當我向這個URL發送請求時,除了電子郵件地址中的'@'符號替換爲'%40'之外,Flask會自動響應重定向到相同的URL。例如,對/users/new/[email protected]/
的請求被重定向到/users/new/user%40example.com/
。當我直接向第二個URL發送POST請求時,我甚至會收到來自Flask的響應,所以我假設在處理請求時'%40'會自動轉換爲'@'字符。
如何讓Flask接受包含'@'符號而不重定向的請求?這可能是Werkzeug的錯,因爲Flask的URL解析系統建立在Werkzeug上。
編輯:我錯誤地在此問題中列出的初始請求URL中包含一個結尾的斜槓。我的問題實際上是由於沒有斜線造成的,而不是用'%40'代替'@'。
你可以更新你的POST網址,以便它使用'%40'而不是文字'@',並避免往返?或者你在乎的是地址欄中的一個不錯的網址? 文字'@'[合法](http://stackoverflow.com/a/19737890/223424),但在URL的域/路徑部分仍然有點奇怪;可能Flask在更換它時反應過度。 – 9000
如上所述,我嘗試將'@'替換爲'%',但Flask仍然將請求看作是使用'@'符號發佈的。我同意將一個電子郵件地址作爲URL路徑的一部分是很奇怪的,但我沒有權利改變這種情況(許多客戶端已經在使用該端點,因此使這種更改可能會破壞向後兼容性)。 – Adam