URL中のIPv6アドレスの扱い

  • ページ: BugTrack
  • 投稿者: CCS?
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: その他
  • 投稿日: 2004-05-29 (土) 02:10:52
  • バージョン: 1.4.3

メッセージ

IPv6を使っている場合に、URLを生成するfunc.phpの583行目の部分がIPv6のことを考慮していないために、有効なURLが生成されません。 URLでIPv6を使う場合は、"http://[::1]/"というようにIPv6アドレスを'['と']'くくる必要があります。 修正はそれほど難しくないと思います。

私は、次のような修正で使っています。

--- func.php.org        Mon Mar 22 00:03:18 2004
+++ func.php    Sat May 29 02:03:47 2004
@@ -580,7 +580,14 @@
        // scheme
        $script  = ($_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://');
        // host
-       $script .= $_SERVER['SERVER_NAME'];
+       //$script .= $_SERVER['SERVER_NAME'];
+       if (preg_match("/:/", $_SERVER['SERVER_NAME']) == 0
+       || $_SERVER['SERVER_NAME']{0} == '[') {
+               $script .= $_SERVER['SERVER_NAME'];
+       }
+       else {
+               $script .= '[' . $_SERVER['SERVER_NAME'] . ']';
+       }
        // port
        $script .= ($_SERVER['SERVER_PORT'] == 80 ? '' : ':'.$_SERVER['SERVER_PORT']);
        // path

調査・対応

Webサーバーにより挙動が異なります。IPv6アドレス、例えば http://[::1]:8080/wiki/ にWebブラウザからアクセスした場合、以下のようになります。

  • Apache 2.2 では $_SERVER['SERVER_NAME'] が '::1'
  • Apache 2.4 では $_SERVER['SERVER_NAME'] が '[::1]'

Apache 2.4 の場合、現行(PukiWiki 1.5.1)のロジックで正常に各リンクが生成され、アクセスできます。

Apache 2.2 の場合は、リンクが不正になります。Apache 2.2でIPv6のIPアドレスアクセスが必要な場合は、提案のようなパッチを当ててください。

他のよく利用されるWebサーバーで同様の不具合が発生する場合は、追加報告をお願いします。


  • 関連:BugTrack/341 -- Ratbeta? 2004-10-31 (日) 21:32:14
  • 参考:RFC3986 Uniform Resource Identifier (URI): Generic Syntax -- Mizar? 2005-03-03 (木) 22:25:24
  • IPv6 -- 2005-04-03 (日) 23:31:04
  • 調査しました。http:// [::1]/wiki/ のようなアドレスでアクセスした場合、Apache 2.2 では $_SERVER['SERVER_NAME'] が '::1' になり、Apache 2.4 では $_SERVER['SERVER_NAME'] が '[::1]' になりました。IPv6のIPアドレス指定のアクセスはレアケースと考えられることと、Apache 2.2のサポート期限が2017年12月までであることを考慮し、追加の対応は行わないことにします。(Apache 2.4であれば現状の実装で正常にIPv6アクセスができている)。この調査をもってResolveとします -- umorigu 2017-09-04 (月) 22:17:57


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-09-04 (月) 22:27:58
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.30-0+deb8u1. HTML convert time: 0.334 sec.

OSDN