綾小路龍之介の素人思考

cgiからtextコンテンツを出力するにはContent-Typeヘッダを操作

適当なContent-Typeヘッダを吐くcgiを作ることでtextコンテンツをcgiから出力できる。例えば、cgiからcssを出力する場合、Content-Typeを指定しなければならない。例えば、サーバーが適切にcssを処理できる場合、telnetを使ってしかるべき方法でcssファイルを取得すると、cssに対応したMIMEタイプがわかる(Content-Typeから始まる1行がhttpヘッダに付けられている。)。

telnet za.toypark.in 80
GET /cgi-bin/link2/test_css.css HTTP/1.0
Host: za.toypark.in
HTTP/1.1 200 OK
Date: Thu, 23 Feb 2006 16:50:19 GMT
Server: Apache
Last-Modified: Thu, 23 Feb 2006 08:36:45 GMT
ETag: "c69b1b-d8-43fd741d"
Accept-Ranges: bytes
Content-Length: 216
Connection: close
Content-Type: text/css
*{margin:0px;padding:0px;border:1px solid red;white-space: normal;}
body{background-color:Black;}
br{z-index:10;white-space:nowrap;letter-spacing: 0;clear: left; display:inline;position:absolute; top:0px; left:0px;}

ちなみに上のように入力しないと目的のコンテンツは得られない。というのも、共有サーバ上のデータなのでhostが必須となのである(あぁバーチャルホストの悲しさ)。試しにhost無しでGETを実行するとlocationヘッダとともに301が返される。加えて接続するホストをinfoseek.co.jpやwww.infoseek.co.jpに変えると、Host込みでgetを実行しても目的のコンテンツは得られない。また、infoseek.co.jpやwww.infoseek.co.jpはHTTP/1.0を返す。

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-01-20T13:41:29+09:00
  2. Modified: 2008-01-20T05:25:04+09:00
  3. Generated: 2017-01-16T23:09:19+09:00