Rubyによるクローラ開発技法 読書メモ その1

DSC03930

最近、「Rubyによるクローラ開発技法」を読み進めておりますが、かなりRubyそのものの勉強になってとてもいいです。

WEBrickでサンプルページを動かした時に、ブラウザで開こうとするとDL始まる件

p28で、Webrickを動かしてアクセスした際に、本に載ってるように
ブラウザで文字列が表示されると思いきや、ページが表示されるのではなくダウンロードが始まってしまった。
今回、これがなんで発生したのかというメモ。

ちなみに、ChromeのDevtoolでレスポンスヘッダを見ようとしたけど、タイムラインに何も表示されないので、レスポンスヘッダの見方がよくわからず・・
そんな事ってあるのー? と思いつつも、こんな時に頼ってしまうのがFirefoxのアドオン。
Livehttpheadersですね。 このプラグインはとにかく手軽でいいですよね。

Live_HTTP_headers_and_Opening_sample-request

というわけで、 application/octet-stream になっているからDLしたようす。
なんでこんなContent-Typeになっているのか最初全然わかりませんでした。(後に、テキストを目を凝らせば間違いに気付くという事実を知るのですが・・)
このMIMEタイプはどこで設定しているのか? サーバ側を見てみると

WEBrickの do_GET メソッドの中で、
res.content_type = WEBrick::HTTPUtils.mime_type(req.path_info,WEBrick::HTTPUtils::DefaultMimeTypes)
と設定しているので、ここのようです。

ところで、WEBrick::HTTPUtils.mime_type ってなにしてるんだろう・・ と思って調べてみると

name, mime_tab) -> String[permalink][rdoc]
ファイル名 filename の拡張子をもとにその MIME タイプを指定された mime_tab から探して文字列として返します。MIME タイプが見つからない場合は “application/octet-stream” を返します。

引用: rubyリファレンスマニュアル

だ、そうです。
自分でアクセスする際に、URLの最後に拡張子付与しなくてはならんかったのかw

そう言われて、テキストをよく見たらちゃんと .html って書いてありました。
おわり

2016-01-09 | Posted in RubyNo Comments » 


関連記事

Comment





Comment



*