URL 參數解析器
支援的輸入格式
- URL: 完整 URL (例如: https://example.com?id=123)
- Query String: 查詢字串 (例如: id=123&name=test)
URL 查詢字串是 URL 中問號(?)之後的部分。它包含以 & 符號分隔的鍵值對,用於向網路伺服器傳遞資料。例如,在 'https://example.com/search?q=hello&lang=zh' 中,查詢字串是 'q=hello&lang=zh'。
URL 由多個部分組成:協議(https://)、域名(example.com)、端口(:8080)、路徑(/page)、查詢字串(?key=value)和片段(#section)。查詢字串用於向伺服器傳遞參數,而片段用於客戶端導航。
GET 參數顯示在 URL 查詢字串中,適合可書籤化、可分享的非敏感資料連結。POST 參數在請求體中發送,不顯示在 URL 中,用於敏感資料或大型載荷。GET 有 URL 長度限制(約 2048 字符),而 POST 沒有實際限制。
URL 只能包含 ASCII 字符,且某些字符(如 &、=、?、/)具有特殊含義,因此需要進行 URL 編碼。空格、中文字符和特殊符號必須進行百分比編碼(例如:空格變為 %20)才能在 URL 中安全傳輸。
永遠不要在 URL 參數中放置敏感資料(密碼、令牌),因為它們會出現在瀏覽器歷史記錄、伺服器日誌和 Referer 標頭中。始終在伺服器端驗證和清理參數以防止注入攻擊。使用 HTTPS 來加密傳輸中的整個 URL(包括參數)。
在 JavaScript 中,您可以使用 URLSearchParams API:
const url = new URL('https://example.com?name=John&age=30');
const params = url.searchParams;
console.log(params.get('name')); // 'John'
console.log(params.get('age')); // '30'
// Or get all parameters
for (const [key, value] of params) {
console.log(key, value);
}URL 可以為同一參數擁有多個值(例如:?color=red&color=blue)。使用 URLSearchParams.getAll('color') 可獲取所有值作為陣列。某些伺服器使用方括號表示法表示陣列參數,如 ?color[]=red&color[]=blue。
雜湊片段(# 之後的部分)通常用於客戶端導航或單頁應用程式。某些框架在雜湊中傳遞參數(例如:#/page?id=123)。與查詢字串不同,雜湊片段不會發送到伺服器,完全在瀏覽器中處理。