HTTP(S)URLのホスト名の部分は本当に大文字と小文字を区別しませんか?


16

サービス側の設定を変更せずに、http(s)://CompanyName.com/xyzをURLとして使用することは安全ですか?

DNSは大文字と小文字を区別しないことを知っていますが、それでも副作用がありますか?たとえば、チェーンのさまざまな部分がCompanyName.com〜companyname.comと一致しないと考えています。

  • 一部のWebバックエンドが一致しない場合があります
  • 一部のロードバランサー/プロキシ/キャッシュ/アプリケーションレイヤーファイアウォールが一致しない場合があります
  • 一部のクライアントが同一生成元ポリシーを誤って適用する可能性があります
  • 一部のクライアントは証明書チェックで一致しない場合があります
  • DNSは一般に大文字と小文字を区別しませんが、IDNは状況を変えることができますか?

URLのホスト名部分の大文字に関する問題やその他の問題を経験した人はいますか?


[編集] @Michael Hamptonは、HTTP標準によれば、ホスト名は大文字と小文字を区別しませんが、この点に関して一部のソフトウェアは非準拠であると指摘しました。

特定のクライアントで、非準拠のソフトウェアがどの程度普及しているかを把握しようとしています。最近の主要なブラウザはすべて問題ないと思いますが、たとえばモバイルアプリについてはどうでしょうか。(これを別のSFの質問に分割した方がよいでしょうか?)[/編集]


たとえば、Firefoxは小文字のHostヘッダーを送信します(少なくとも、その開発者ツールが私に見せていることです)。したがって、すべてのブラウザーがこれを行うと仮定すると、サーバーへのパス上の一部の機器が大文字と小文字を区別していなくても問題はないはずですホスト名。curl一方、ヘッダーを送信するときに大文字と小文字を保持します。

回答:


23

はい、ホスト名は実際にはDNSで大文字と小文字を区別しないため、RFC 3986§3.2.2で指定されているように、ホスト名は大文字と小文字を区別しません。このRFCは、あなたが言及した問題を回避する方法に関する推奨事項も提供します。

ホストは大文字と小文字を区別しませんが、プロデューサとノーマライザは、統一エンコーディングのために登録名と16進アドレスに小文字を使用し、パーセントエンコーディングには大文字のみを使用する必要があります。

私は、少なくとも1つのHTTPキャッシュ(見てきましたW3トータルキャッシュの下で例えば、このようにホスト名を正規化していない)、およびコンテンツを複数回キャッシュ終わるexample.comExample.ComEXAMPLE.COMなど、


1
少なくとも最悪の事態が発生する限り、コンテンツは非準拠のキャッシュによって複数回キャッシュされるので、それは何とか共存できるように思えます。
CVn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.