我在我的代碼中遇到了一個錯誤,歸結為 python 的 urllib.parse.urlparse 中的意外行為。當 URL 中的密碼包含?. 我很害羞地將其稱為錯誤,因為我不能 100% 確定 URL 在語法上是正確的。例如:
https://user:pass[email protected]/path
我希望這決議為:
ParseResult(scheme='https', netloc='user:[email protected]', path='/path', params='', query='', fragment='')
但它實際上決議為:
ParseResult(scheme='https', netloc='user:pass', path='', params='', query='[email protected]/path', fragment='')
這些 URL 正在其他地方自動格式化,?需要支持密碼中的 使用。有趣的是,URLS 實際上是 sqlalchemy 連接字串,而 sqlalchemy / psycopg2 都按預期解釋它們。
題
?URL 密碼 (netloc) 中是否允許使用問號?- 理想情況下,答案將參考適當的 RFC 措辭。
或者python在這里的行為是否正確?
uj5u.com熱心網友回復:
RFC 2396 中的第 3.2 節指定?在授權組件中保留它(這意味著您不能在沒有編碼的情況下在該組件中使用它,請參閱 2.2)。權限組件 IIUC 是包含 HTTP 方案 URI 的用戶名/密碼的組件(參見 3.2.2)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/343386.html
