#daiizメモ

Scrapboxに夢中

【日記】Friday

一昨日くらいの話.

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++を知らない僕でも読みやすい.

f:id:daiiz:20160304231004p:plain:w150

なぜダメだったのか,どうしてOKになったのかを調べるとおもしろいことが分かったりする.