20

URL を処理するコードを書いていますが、奇妙なケースを除外していないことを確認したいのです...

A ~ Z、0 ~ 9、「-」、および「.」以外のホストに有効な文字はありますか?

(これには、サブドメインなどに含まれる可能性のあるすべてのものが含まれます。基本的に、:// と最初の / の間のすべて)

ありがとう!

4

6 に答える 6

35

有効なホスト名の制限を参照してください。

ホスト名は、すべてのドメイン名と同様に、ドットで連結された一連のラベルで構成されます1。たとえば、「en.wikipedia.org」はホスト名です。各ラベルの長さは 1 ~ 63 文字である必要があり、ホスト名全体は最大 255 文字です。

RFC は、ホスト名のラベルに ASCII 文字の「a」から「z」(大文字と小文字を区別しない)、数字の「0」から「9」、およびハイフンのみを含めることを義務付けています。ホスト名ラベルは、ハイフンで開始または終了することはできません。その他の記号、句読点、空白は使用できません。

于 2009-07-15T19:26:28.277 に答える
5

いいえ、それだけが許されます

読みたい場合のリファレンスは次のとおりです 。 http://www.ietf.org/rfc/rfc1034.txt

于 2009-07-15T19:25:04.737 に答える
5

どのレベルで検証を行うかによって異なります (URL エスケープの前または後)。ユーザー入力を検証しようとすると、ASCII をはるかに超える可能性があります (Unicode の大きなチャンクを使用)。

http://en.wikipedia.org/wiki/Internationalized_domain_nameを参照してください

すべてのエスケープと「punycode」が完了した後に検証しようとすると、古い RFC によって有効な文字のみが含まれていることが既に保証されているため、検証の意味がありません。

于 2009-07-16T05:50:38.910 に答える
1

インターネットのホスト名規則に加えて、DNS システムは好きな名前を自由に作成できることに注意してください。DNS サーバーは、8 ビット バイナリ リクエストを受け入れて応答することができます。DNS ワイヤ プロトコルはそれを禁止していません。

これは、ホスト名にアンダースコアが表示されるなど、内部 LAN の URL に対して異なるルールが適用される可能性があることを意味します。

于 2012-11-12T19:29:20.533 に答える
1

有効な URL ホストには、ASCII 文字、数字、ドット ( . ) およびハイフン ( - ) が含まれ、最大長は 255 で、ドット区切りのラベルは最大長が 63 です。ハイフンは、one-two.net などの英数字シーケンスを区切ることができますが、 -one.two.com、one.two.com-、one-.two.com など、ドットで区切られたラベルの先頭または末尾は無効なホストです。

https://www.rfc-editor.org/rfc/rfc1123#page-79およびhttps://www.rfc-editor.org/rfc/rfc952の仮定パート 1 を参照してください。

また、これは、2019 年 5 月 28 日の時点で機能する URL ホストを検証するためのオンライン正規表現ツールへのリンクですhttps://www.regextester.com/23

また、https://www.rfc-editor.org/rfc/rfc1123#page-13を参照するホストを検証する場合、DNS で検索する前に、ホストのドット付き 10 進数を構文的にチェックする必要があります。

于 2019-05-28T23:39:29.160 に答える
0

公式の W3C 仕様に完全に一致する URL 解析コードを作成する場合は、 www.w3.org/TR/url-1/ のドキュメントを参照してください。URL 内のホストに関する特定の情報については、セクション 3 (ホスト) を参照してください。

于 2015-07-29T19:05:11.697 に答える