nDiki : HTTP
HTTP - Hypertext Transfer Protocol
メモ
キャッシュ関連のヘッダ
| リクエスト | レスポンス | ||
| If-Modified-Since | o | ||
| If-None-Match | o | ||
| Expires | o | ||
| Last-Modified | o | ||
| Etag | o | ||
| Cache-Control | o | o | HTTP/1.1 より。Expires や Pragma より優先される。 |
| Pragma | o | o |
キャッシュさせたくないならば
Pragma: no-cache Cache-Control: no-cache
web
RFC
- RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1
- http://www.studyinghttp.net/...
キャッシュに関するページ
User-Agent リクエストヘッダフィールド
スポンサード リンク
Related term
2004年6月1日 (火)
■ HTTP/1.0 Simple-Response

「ある無線基地局のWeb管理画面の制御をスクリプトでしようとリクエストを送ったら、Status-Line 無しでボディが返ってきたよ」という話。 でRubyのライブラリや wget だとエラーになるとのこと。
@ HTTP/0.9 Simple-Response
RFC1945 6. Response で、Status-Line をともなわない「Simple-Response」というのが定義されている(HTTP/1.1 RFC2616 にはない)。
HTTP/0.9 Simple-Request (RFC1945 5. Request) を受けた時のみ Simple-Response を送信すべきとあるが must ではないようだ。 HTTP/1.0 Full-Request を送信して Status-Line で始まらないレスポンスを受けたら、Simple-Response とみなすべきとある。
GET Request-URI HTTP/1.1 CRLF
を受信した HTTP/1.0 サーバが Simple-Request を返しても違反とはいえないのかな。 まぁ行儀が悪いことには違いないが。
@ Perl libwww-perl の場合
Perl のライブラリをみてみた。
libwww-perl の Net::HTTP::Methods::read_response_headers では laxed => 1 が指定されると、Status-Line が無い場合 HTTP/0.9 な 200 と判断するようになっている。
LWP::UserAgent を使うと laxed => 1 が設定された状態で呼ばれるので、Simple-Response もうまく処理できるはず。
@ Server: GR-HTTPD Server/2.20
Server レスポンスヘッダフィールドにある GR-HTTPD っていうのは国産の組み込みWebサーバのようだ。
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- 他の Web サイトの情報を URI::Fetch でキャッシュ付き取得 (2005-10-29)
- POE で HTTP プロキシサーバ (2005-10-15)
- Tor で hidden service (2005-02-13)
- Firefox 拡張機能の整理 (2005-02-05)
2004年6月7日 (月)
■ ハイパー日記システム と Log::Log4perl

朝、Naney's Diary をチェックしたらエラーが出てしまっている。 昨日 WiKicker をアップデートした事による影響か。
チェックしたところ、hns ではライブラリに HTTP というパッケージがありその中で Request サブルーチンが定義されていた。 これが HTTP::Request モジュールと被っており、今回 WiKicker の更新で間接的に使用されることになった Log::Log4perl の中での new HTTP::Request と衝突する事に。
名前空間大事。
hns の方の HTTP::Request サブルーチンはそのパッケージ内でしか呼ばれていないようなので、HTTP::RequestSub と名前を変更して対処。
- WiKicker 0.30 リリース - トップページのページ名を変更でき... (2006-05-22)
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- WiKicker における PageName 最長文字数 (2006-06-10)
2004年7月19日 (月)
■ PAR

いやな日記で紹介されている PAR を試してみた。 PAR は Windows に限らず実行形式のファイルを生成する事ができる (UNIX 系ではメリットは少ないかもしれないが)。
PAR ファイル (ZIP) として必要なスクリプトやモジュールをパッケージ化できるのも嬉しい。 Perl は便利なのだが他人に使ってもらう時に面倒で Java の JAR ファイルが羨しかったのだが、まさにそれを実現してくれる (実行可能ファイルにしてしまうともっとお気楽)。
また PAR ファイルをHTTPサーバ上においておいてリモートから取得できる機能もあり、Java Web Start に近い使い方ができそうである。
Debian BOX に入れて遊んでみた。sid でもパッケージになっていないので dh-make-perl でパッケージ化してつっこむ。
@ スクリプトを実行可能形式に
$echo 'print "hello\n";' > hello.pl $perl hello.pl $pp -o hello hello.pl $ls -l hello -rwxr-xr-x 1 naney naney 1739227 2004-07-19 22:09 hello $file hello hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped $./hello hello
@ スクリプトを PAR ファイルに
$pp -p -o hello.par hello.pl $zipinfo hello.par Archive: hello.par 1184 bytes 5 files drwxr-xr-x 2.0 unx 0 b- stor 19-Jul-04 22:13 script/ -rw-r--r-- 2.0 unx 17 t- defN 19-Jul-04 22:12 script/hello.pl -rw-rw-rw- 2.0 unx 262 b- defN 19-Jul-04 22:13 script/main.pl -rw-rw-rw- 2.0 unx 434 b- defN 19-Jul-04 22:13 MANIFEST -rw-rw-rw- 2.0 unx 214 b- defN 19-Jul-04 22:13 META.yml 5 files, 927 bytes uncompressed, 678 bytes compressed: 26.9% $parl hello.par hello
@ ワンライナーも実行可能形式に
$pp -o hello -e 'print "hello\n"' $ls -l hello -rwxr-xr-x 1 naney naney 1739237 2004-07-19 22:19 hello $file hello hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped $./hello hello
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- Eclipse 3.0M8 (2004-04-19)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Module::Build でソースパッケージング (2005-08-24)
- Twitter ベイジアンフィルタプロキシ (2007-12-29)
2004年8月26日 (木)
■ GanttProject で開発スケジュールを作成

そろそろ2004年度後期プロジェクトが複数スタートする。 スタッフの割り当てをどうするか見通すために、ガントチャートでも書いてみる。
細かくスクロールができなかったり、印刷、画像エクスポートの際の範囲指定ができなかったりと痒いところがまだまだあるが、それなりに使える GanttProject で作業。
とう点を利用して、
- 作ったプロジェクトファイルを社内Webサイトに置く。(WebDAV は用意していないので閲覧用)
- JNLPファイルを書く。Java Web Start で GanttProject を起動するようにする。起動時の引数にプロジェクトファイルのURLを指定する。
- Wiki からJNLPにリンクをはる
として Wiki から直接 GanttProject を立ち上げてガントチャートを表示できるようにした。 変更毎にHTML(や画像、PDF)に export する必要がないので楽。 閲覧側はちょっとヘビーではあるが、自由にスクロールや拡大・縮小して見られるという利点がある。
- ガントチャート関連ツール (2004-04-13)
- ソフトウェア技術者御用達のプロジェクトマネジメントツール TaskJuggler (2007-04-23)
- JAlbum で Webフォトアルバム (2004-11-14)
- Hyper Estraier で社内 Web コンテンツ検索 (2006-06-01)
- 私的10大ニュース2005 [ comp ] (2005-12-31)
2004年9月14日 (火)
■ XMLRPC::Lite + 自前の HTTP::Daemon サーバ

既に HTTP::Daemon で作成されているHTTPサーバで、XML-RPC インタフェースを提供したい。 前回のチェックで XMLRPC::Lite を使う事にした(RPC::XML は ActivePerl 5.6.1 build638 でテストが通らない)。 このパッケージで用意されているサーバ向けモジュールは、主に単独CGI プログラムで使うモジュールと、自前で HTTP::Daemon をまわすサーバタイプ。
そのままでは使えないので、以下のように。
- XMLRPC::Transport::HTTP::CGI のサブクラスを作成し、handle をオーバライドする。中身は SOAP::Transport::HTTP::Server::handle を呼ぶだけ (SUPER::handle では駄目)。
- XML-RPC リクエストがきたら、上記インスタンスの request メソッドで HTTP::Request オブジェクトを渡す。
- handle を実行。
- response メソッドで HTTP::Response を受け取り、クライアントに送信。
handle メソッドで入出力をさせないようにするのがポイント。
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- HTTP::Daemonベースのプログラムのテスト (2004-11-26)
- RPC::XML のかわりに XMLRPC::Lite (2004-08-31)
- www.naney.org に「友人・知人に紹介メール」ページを新設 (2000-12-27)
- ハイパー日記システム と Log::Log4perl (2004-06-07)
2004年11月26日 (金)
■ HTTP::Daemonベースのプログラムのテスト

make test でテストしておけるようにしておきたい。
ということで王道。fork して daemon プログラムを exec。 WWW::Mechanizeで daemon に HTTP でアクセスし各種テスト。
終わったら kill。
Win32 (ActivePerl)では fork + exec で起動できるのだけれど kill では死なない。 ということで Win32::Process::Create で直接起動して、Win32::Process::Kill で終了させるという別解で。
HTTP + HTMLのテストは、以前ちょっと使ったことのあるHTTP::WebTestを使おうかと思ったが、なんだかんだいって WWW::Mechanize の方が好きなように書けそうなのでこちらをチョイス。
- XMLRPC::Lite + 自前の HTTP::Daemon サーバ (2004-09-14)
- ActivePerl 5.6.1 Build 638 にバンドルされている... (2004-08-19)
- iモードHTMLシミュレータ Version 7.2 (2005-05-10)
- WiKicker の Win32 対応 (2005-04-04)
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
2005年1月21日 (金)
■ リモートポートフォワーディングでライブカメラを晒す

プライベートネットワーク上に設置したBL-C10を外部からアクセスできるようにする時の方法を確認。
ということで、公開しているサーバでHTTPを中継するという方向で。 となると SSH の remote port forwarding か。
- 公開サーバ: www.example.com
- BL-C10: 192.168.0.X
として192.168.0.0/24 にいる自分のPCから
ssh -R 3000:192.168.0.X:80 www.example.com
で www.example.com:3000 にアクセスするとライブカメラが見られるようになる。 ただし www.example.com の sshd の設定で
GatewayPorts yes
になっていないと、他のホストからアクセスできない。 www.example.com 上の stone で外部からアクセスできるようにさらに転送用のポートを作る。
自分のPCから
ssh -R 3000:192.168.0.X:80 www.example.com stone 127.0.0.1:3000 30001
で、
www.example.com:3001 -> www.example.com:3000 -> 192.168.0.X:80
と転送されるようになる。 実験も成功 (実験環境では ssh を実行する時に -1 オプションをつけないと -R がうまく動かない事を忘れていてちょっとはまった)。
自宅(ADSL接続)上の BL-C10 を上の方法で晒してアクセスしてみる。 ADSL回線を上って下る事になるが、ちょっと覗くにはそれなりの描画更新ができている様子。 BL-C10 の内蔵 Web サーバで動画を見ながらカメラを操作した時のレスポンスが悪かったのだが、これは stone の -f オプションで子プロセスを数個上げておくようにすることで改善された。
上の方法だと ssh を止めてもリモートホストの stone のプロセスが残ってしまい、別途 kill しないといけないのでちょっと面倒。 何かうまい方法はないかな。
- [ お仕事 ] OCNエコノミー -> OCN ADSLアクセスIP8「フ... (2004-01-16)
- Tor で hidden service (2005-02-13)
- ホームネットワークカメラ BL-C10 買っちゃった (2005-01-18)
- [ Linux ] SSH remote port forwarding (2004-02-02)
- ネットワークカメラが欲しい (2005-01-15)
2005年2月5日 (土)
■ Firefox 拡張機能の整理

ユーザプロファイルをクリアしたついでに、インストールする拡張機能を整理してみる。
@ テーマ
- 楠見直人氏の rein。Cool!
@ Debian パッケージで入れてしまう拡張
- DOM Inspector (mozilla-firefox-dom-inspector)
- Diggler (mozilla-diggler)
- Live HTTP Headers (mozilla-livehttpheaders)
- Firefox Development JLP
@ 必須拡張
- タブブラウザ拡張
- Add Bookmark Here
- Galeon ユーザだった自分には必須。
- SwitchProxy Tool
- Privoxy の on/off 用
- Web Developer
- CSS書き時必須。フォームの POST -> GET 変換も便利。
@ あった方が便利 (入れる)
@ 以前いれていたけどあまり使っていないもの (今回保留)
- ContextMenu Extensions
- Configuration Mania
- ChromEdit
- Ez Sidebar
- ScrapBook
- GooglePreview
- Firefox ユーザプロファイル作り直し (2005-09-11)
- Iceweasel 2.0 (Firefox 2.0) にほぼ無事移行終了 (2006-11-27)
- 遅ればせながら Greasemonkey。mixi の未読・既読の色分けなど。 (2005-10-01)
- Tor で hidden service (2005-02-13)
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
2005年2月13日 (日)
■ Tor で hidden service

Tor: An anonymous Internet communication system を試してみる。 Torは匿名接続を提供するシステム。 アプリケーションで Tor クライアント(あるいはサーバ)をSOCKSサーバとして指定すると、いくつかの Tor サーバを経由して目的のサービスに接続されるようになる。 途中の経路は時間とともにどんどん変わっていく(らしい)。
@ インストール
Debian パッケージになっているので apt-get。
@ Privoxy と連携させて Web閲覧
もともと普段から使用している Privoxy の config に、
forward-socks4a / localhost:9050 .
という設定を追加して再起動。Privoxy がローカルサーバで動いている Tor 経由で接続するようになる。
Firefox -> Privoxy(localhost:8118) -> Tor(localhost:9050)
-> Tor server -> ... -> Tor server -> Web サーバ
という感じに複数の Tor サーバを経由して目的にサーバに接続されるようになる。
Web サーバのアクセスログを見ながら何度かHTTPアクセスをしてみると、IP アドレス(経路の最後の Tor server)が変わっていくのがわかる。
@ 使用感
かなりレスポンスが悪くなる。 現状では常時設定しておくのは辛い感じ。
Tor では名乗りを上げない限り(待ち受けポートを開けた上で、ディレクトリサーバに登録する)サーバにはならない。 このため、Tor server が絶対的に足りていないのかもしれない。
@ hidden service
Tor の面白い機能の一つに匿名サービスを提供する機能がある。 Web サーバやSSHサーバなどを匿名で晒すことができる。
この時動かす tor は Tor サーバである必要はなく Tor クライアントでかまわない。
/etc/tor/torrc に
HiddenServerDir /var/lib/tor/hidden_http_service/ HiddenServicePort 80 127.0.0.1:80
を追加して、tor を再起動。
/var/lib/tor/hiden_http_service/hostname というファイルに ****************.onion というホスト名が書かれているので、Tor + Privoxy 経由で http://****************.onion/ にアクセスすると、先ほどの tor が動いているサーバの Web サーバのページが見える。 hidden service を提供している tor は NAT の中にいてもOK(のようだ)。
閲覧者側に Tor (とPrivoxyなど)がインストールしてあれば、ダイナミックDNSに登録したりしなくても好きなタイミングで Web サーバにアクセスしてもらえるようになる。 面白い。
ローカルの Apache に 「ServerAlias *.onion」な Virtual Host の設定を追加して、Tor 経由専用のWebサイトも実験的に準備しておいてみた(例によって Wiki)。
- ノート PC で Apache Virtual Host (2004-12-15)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- Firefox 拡張機能の整理 (2005-02-05)
- [ Debian ] Privoxy + SSH (2004-01-28)
- [ お仕事 ] OCNエコノミー -> OCN ADSLアクセスIP8「フ... (2004-01-16)
2005年3月11日 (金)
■ wxPerl で daemon モニタ

Perl で書いた HTTP daemon 形式のシステムがあるのだが、Windows ユーザにとってはコマンド プロンプトからコマンドラインオプションを指定しての起動は繁雑でよろしくないらしい。
以前から管理用のGUIをつけようと思っていたのだが、現在の daemon プログラムにGUIをつけるとするとマルチスレッド化にしなければならないとか、そういう頭があって後まわしにしていた。
今回、まずはランチャと daemon のログモニタというレベルでGUIを作ってみることにした。 wxPerl でランチャを作ってそこから子プロセスとして daemon を起動するという形式。 ランチャ側のアイドルループで、daemon の標準出力・標準エラー出力を読み出して表示するというもの。Linux 上ではうまく動いた。
- Wx::Process でプロセスオブジェクトを生成
- Wx::Process::Redirect() で、I/Oを取れるようにする。
- Wx::ExecuteCommand() や Wx::ExecuteArgs() で daemon を起動。Wx::Process のインスタンスに結びつける。
- EVT_IDLE でアイドルイベントハンドラの中で Wx::Process::GetInputStream、Wx::Process::GetErrorStream からの読み出しを行い defined ならば、UI側で表示。
- daemon の終了がしたかどうかは EVT_END_PROCESS で捕捉。
といった感じ。
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- ActivePerl で Ming (2005-02-23)
- ソフトウェア技術者御用達のプロジェクトマネジメントツール TaskJuggler (2007-04-23)
- JSmooth で Win32 上でのJava プログラム起動ファイル作成 (2004-12-06)
- 第13回 社内 Perl 勉強会 (2006-08-07)
スポンサード リンク
■よく検索されるキーワード
perl(62) torrent(54) linux(48) 提案書(47) windows(43) 書き方(41) 使い方(29) アジェンダ(26) x31(25) 充電式カイロ(25) cvs(22) インストール(20) サンプル(20) thinkpad(19) アジェンダとは(19) f-01a(18) wiki(17) c#(16) 感想(16) カイロ(16) usb(16) java(16) 秋葉原(15) debian(15) ヨドバシカメラ(15) subversion(15) 壁紙(15) 作り方(15) 静電気(14) apache(14) グッズ(14) デロンギ(13) フリー(13) sh-01a(13) ganttproject(13) 修理(13) ssh(12) svn(12) ヨドバシ(12) truecrypt(12) ダイソー(11) 手帳(11) activeperl(11) ubuntu(11) ほぼ日手帳(11) firefox(10) mew(10) mp980(10) ドラマ(10) 日本語(10) n-01a(10) google(10) tc-1(10) 評判(10) ツール(10) djunit(9) cgi(9) 動画(9) mp3(9) オイルヒーター(9) docomo(9) rcs(9) 除去(9) centos(9) メモリ(9) エネループ(9) 設定(9) p-01a(9) tortoisesvn(9) 無印(8) ケース(8) 口コミ(8) ミノルタ(8) メール(8) インストーラ(8) 会議(8) xampp(8) 加湿器(8) af(7) 値段(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 15.110105s / load averages: 0.13, 0.16, 0.15
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク