一昨日くらいの話.
Chromeアプリからlocalhost:6000にアクセスしようとしたら,コンソール画面でnet::ERR_UNSAFE_PORT
と怒られた.localhostにアクセスすることは問題なくて,ポート番号に6000番を指定したというのが原因だった.せっかくなので詳しいことを知ろうと,「chrome net::ERR_UNSAFE_PORT」で検索した.
すると,Chromiumのnet/base/net_util.cc
を読むと分かるよというヒントを得られた.以下のページを開くと読める.
https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net_util.cc
70行目から始まる構造体kRestrictedPorts
で,予め予約(ブロック)されているポート番号のリストを確認することができる.そのポート番号を使っているアプリケーションがコメントとして書かれていて勉強になる.120行目や121行目とかで,コメントに??
が付いているのはどういうことだろう.今回僕が使おうとして怒られた6000番は129行目に書かれていた.
ここで定義された構造体の要素を一つずつfor
ループで回して,アクセスされようとしているport番号と照合して,一致したらfalse
を返すという処理が,299行目の関数IsPortAllowedByDefault
に書かれている.この辺りはC++を知らない僕でも読みやすい.
なぜダメだったのか,どうしてOKになったのかを調べるとおもしろいことが分かったりする.