Yueseryueser.com

← ガイド一覧

URL パーサーのガイド:リンクを分解して見る

リダイレクトの調査は、リンクを分解することから始まります。パラメータが付いていたか、二重にエンコードされていないか、フラグメントの値はサーバに届いていないのではないか。

ツールを開く:URLパーサー

リンクを分解すべきとき

キャンペーンのパラメータが合わない、コールバック URL に余分なスラッシュがある、共有リンクでパラメータが消えた、ユーザーがトップページに着いたと言う。どれも文字列全体を眺めるより、各要素を見るほうが早いです。

開発時にも使います。パラメータが二重エンコードされていないか、空白が %20 で届いたかプラスで届いたか、ハッシュ内のルートがサーバに届いているか。分解すれば問題はたいてい一目で分かります。

空白は %20、プラスも空白

URL で空白を表す標準は %20 です。クエリ文字列ではフォームの規則によりプラスも空白を意味するため、同じ値を2通りに書けます。本当のプラスは %2B と書かないと、空白として扱われます。

パラメータの値はデコードされますが、クエリ文字列の欄は元のエンコードのまま表示されます。前後を比較できるので便利です。同じキーが複数ある場合は行を分け、順序も保たれます。署名の確認では重要です。

境界:解析するだけで、判断はしない

相対パスはプロトコルもホストもないため、標準 URL として解析できずエラーになります。先に完全な URL にしてください。フラグメントは1つの値として表示し、分割しません。ハッシュ以降はサーバに送られないからです。

ホスト名は正規化されます。小文字化、既定ポートの削除、国際化ドメインの punycode 変換です。表示が入力と違っても等価です。ツールはリンクにアクセスせず、短縮 URL とフィッシングの区別もできません。

よくある質問

相対パスで失敗するのはなぜですか

標準 URL はプロトコルとホストがあって初めて各部分が決まるからです。完全な https のアドレスに補ってから解析してください。

プラスが空白になるのはなぜですか

クエリ文字列はフォームの規則で解析され、プラスは古くから空白を意味してきたからです。本当のプラスは %2B、空白は %20 でもプラスでも構いません。

フラグメント内のパラメータが分かれないのはなぜですか

ハッシュ以降はサーバに送られず、ブラウザだけが扱うからです。SPA がルートを置くことはありますが、それはフロント側の約束で URL のクエリではありません。

関連ツール:URLパーサー