トップ(最新) | <前 | 次>

nDiki : HTTP

HTTP - Hypertext Transfer Protocol

メモ

キャッシュ関連のヘッダ

リクエストレスポンス
If-Modified-Sinceo
If-None-Matcho
Expireso
Last-Modifiedo
Etago
Cache-ControlooHTTP/1.1 より。Expires や Pragma より優先される。
Pragmaoo

キャッシュさせたくないならば

 Pragma: no-cache
 Cache-Control: no-cache

web

RFC

キャッシュに関するページ

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-perlNet::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サーバのようだ。

スポンサード リンク


[ 6月1日全て ]

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 と名前を変更して対処。


[ 6月7日全て ]

2004年7月19日 (月)

PAR このエントリーを含むはてなブックマーク

いやな日記で紹介されている PAR を試してみた。 PARWindows に限らず実行形式のファイルを生成する事ができる (UNIX 系ではメリットは少ないかもしれないが)。

PAR ファイル (ZIP) として必要なスクリプトやモジュールをパッケージ化できるのも嬉しい。 Perl は便利なのだが他人に使ってもらう時に面倒で JavaJAR ファイルが羨しかったのだが、まさにそれを実現してくれる (実行可能ファイルにしてしまうともっとお気楽)。

また 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

[ 7月19日全て ]

2004年8月26日 (木)

GanttProject開発スケジュールを作成 このエントリーを含むはてなブックマーク

そろそろ2004年度後期プロジェクトが複数スタートする。 スタッフの割り当てをどうするか見通すために、ガントチャートでも書いてみる。

細かくスクロールができなかったり、印刷画像エクスポートの際の範囲指定ができなかったりと痒いところがまだまだあるが、それなりに使える GanttProject で作業。

とう点を利用して、

  1. 作ったプロジェクトファイルを社内Webサイトに置く。(WebDAV は用意していないので閲覧用)
  2. JNLPファイルを書く。Java Web StartGanttProject を起動するようにする。起動時の引数にプロジェクトファイルのURLを指定する。
  3. Wiki からJNLPにリンクをはる

として Wiki から直接 GanttProject を立ち上げてガントチャートを表示できるようにした。 変更毎にHTML(や画像PDF)に export する必要がないので楽。 閲覧側はちょっとヘビーではあるが、自由にスクロールや拡大・縮小して見られるという利点がある。


[ 8月26日全て ]

2004年9月14日 (火)

XMLRPC::Lite + 自前の HTTP::Daemon サーバ このエントリーを含むはてなブックマーク

既に HTTP::Daemon で作成されているHTTPサーバで、XML-RPC インタフェースを提供したい。 前回のチェックで XMLRPC::Lite を使う事にした(RPC::XMLActivePerl 5.6.1 build638 でテストが通らない)。 このパッケージで用意されているサーバ向けモジュールは、主に単独CGI プログラムで使うモジュールと、自前で HTTP::Daemon をまわすサーバタイプ。

そのままでは使えないので、以下のように。

  1. XMLRPC::Transport::HTTP::CGI のサブクラスを作成し、handle をオーバライドする。中身は SOAP::Transport::HTTP::Server::handle を呼ぶだけ (SUPER::handle では駄目)。
  2. XML-RPC リクエストがきたら、上記インスタンスの request メソッドで HTTP::Request オブジェクトを渡す。
  3. handle を実行。
  4. response メソッドで HTTP::Response を受け取り、クライアントに送信。

handle メソッドで入出力をさせないようにするのがポイント


[ 9月14日全て ]

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 の方が好きなように書けそうなのでこちらをチョイス。


[ 11月26日全て ]

2005年1月21日 (金)

リモートポートフォワーディングライブカメラを晒す このエントリーを含むはてなブックマーク

プライベートネットワーク上に設置したBL-C10を外部からアクセスできるようにする時の方法を確認。

  • カメラはプライベートネットワーク上にあり、外からは直接アクセスできない
  • プライベートネットワーク(ルータ)の IP アドレスは秘密のままにしておきたい

ということで、公開しているサーバでHTTPを中継するという方向で。 となると SSHremote 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 しないといけないのでちょっと面倒。 何かうまい方法はないかな。


[ 1月21日全て ]

2005年2月5日 (土)

Firefox 拡張機能の整理 このエントリーを含むはてなブックマーク

ユーザプロファイルをクリアしたついでに、インストールする拡張機能を整理してみる。

@ テーマ

@ Debian パッケージで入れてしまう拡張

  • DOM Inspector (mozilla-firefox-dom-inspector)
  • Diggler (mozilla-diggler)
  • Live HTTP Headers (mozilla-livehttpheaders)
  • Firefox Development JLP

@ 必須拡張

  • タブブラウザ拡張
  • Add Bookmark Here
    • Galeon ユーザだった自分には必須。
  • SwitchProxy Tool
  • Web Developer
    • CSS書き時必須。フォームの POST -> GET 変換も便利。

@ あった方が便利 (入れる)

  • Google Pagerank Status
  • googlebar
  • mixiツールバー

@ 以前いれていたけどあまり使っていないもの (今回保留)

  • ContextMenu Extensions
  • Configuration Mania
  • ChromEdit
  • Ez Sidebar
  • ScrapBook
  • GooglePreview

[ 2月5日全て ]

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)。


[ 2月13日全て ]

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 で捕捉。

といった感じ。


[ 3月11日全て ]

スポンサード リンク

■よく検索されるキーワード

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)

この日記のはてなブックマーク数 Add to Google RSS

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)