ホームHTMLに役立つヒントADSLでMACサーバ・実験室 > web共有のメモ

web共有のメモ

 web共有のメモです。web共有(classic Mac OS付属のもののこと)は無料だし、結構頑丈だし、かなり気に入ってます。ただし、そのままでは.css/.jsの送り出しに問題があります。


■ 目次 ■


web共有の概要 ▲ページトップ

 Mac OSに無料で付属してくるwebサーバソフトです。設定も簡単、ウイルス・アタックにも強いし、スピードも必要十分です。手間いらずのサーバといえます。ちょっと慣れた人からすると、設定できる項目が少なくて、そこが不満になるようです。

 QPQ1.02と比べると.htmlの送り出しやCGIの実行スピードが若干遅いようですが、「比較すれば」の話で、十分な実力を持っています。

 欠点としては、SSIが使えない(カウンタで苦労する)ことでしょうか。スピードは遅いですがweb共有で動作するカウンタを作りましたので、興味のある人はどうぞ。

 しかし、2005年になって、FirefoxなどMozilla系ブラウザで、うまく.cssや.jsファイルが認識できないという問題があることがわかりました。次項でまとめ、解決法も載せましたので参照してください。


.css/.jsファイルの送り出し問題 ▲ページトップ

 サーバは、ファイルをブラウザに送り出すときに、これから送るファイルの内容を宣言します。これをファイルヘッダといいます。普通、これはMIME設定で設定します。

 web共有では、ファイルヘッダ(MIMEヘッダ)を送り出すときに余分な情報も送りだしてしまいます。いくつか例を挙げます。

ファイルの種類 正しいファイルヘッダ web共有のファイルヘッダ
.css text/css text/css; charset=unknown
.js text/javascript text/javascript; charset=unknown
.html text/html text/html; charset=unknown

 このように、text系を送り出すとき、必ずMIME設定の後ろに「; charset=unknown」を付け加えるようなのです。これが災いして、Mozilla系ブラウザでは.css(外部CSSファイル)を認識できなかったり、.js(外部JAVAscriptスクリプトファイル)が文字化けしたりします(IEやSafariではこのファイルヘッダでも不具合は出ません)。

 今のところ実用上で問題が出るのは、.cssと.jsの2種類のファイルだけのようです。ASSblogの開発中(2005/4月)にこの問題が発覚しました。(2005/12/15追記。iCabではhtml/htmで文字化けが発生することが発覚。)

 なお、ファイルがどんなファイルヘッダで送り出されているか、こちらのサイトで確認できます。

http://web-sniffer.net/ 

HTTPレスポンスヘッダー表示ツール 


解決方法 ▲ページトップ

 .cssと.jsファイルの送り出しに問題があることは前項の通りです。昔のブラウザだけなら問題にならなかったことです。でも、webの世界も新しいブラウザがでてきたりいろいろ変化しています。web共有も少しずつ現状に合わなくなりつつあり、老朽化が始まったということでしょう。

 web共有には「アクション」という機能があります。ファイルを送り出すときにいろんな処理を施せる機能です。ファイルヘッダの問題を解決するため、この機能を使います。

 考え方は単純です。.cssや.jsのリクエストがあった場合、リクエストされたファイルを読み込んで、正しいヘッダで送りだすスクリプトを作ります。このスクリプトをweb共有のアクション機能を使って動かします。つまり、.cssと.jsファイルを送り出す時はスクリプトで、その他のファイルやCGIはweb共有が送り出す、というわけです。そのために、MIME設定でcssとjsは削除しておく必要があります

 このスクリプトは以前「put_css」という名前で配付していました。2006/9/22に機能アップして「reshead」と名前を変えました。

resheadについて こちらで解説・配付していますのでご覧ください。


Tips ▲ページトップ

●PNF表示1

 web共有の設定で「ホームページ」が「なし(Personal NetFinder)」になっているとPNF機能が使える。

 例えば「http://mizusawa.no-ip.info:8080/PNF:/blogcgi/readme/」のように「PNF:」をつけてディレクトリ(フォルダ)にアクセスすると、そのディレクトリの中のファイルの一覧が表示される。これがPNF機能だ。

 ただし、そのディレクトリの中に「index.html」が存在すると、PNF表示機能はキャンセルされ、普通通り「index.html」が表示される。つまり、「このディレクトリの内容は明かしたくないな」と思ったら、わざと「index.html」を置いておけばよい。中身はからっぽだろうがなんだろうがいい。

●PNF表示2

 実はPNF表示の表示順を変更することができる。指定がなければ名前順に表示されるが、「PNF:byKind:/〜」とか「PNF:byDate:/〜」「PNF:bySize:/〜」が使える。

 もっとも、PNF表示されると、ディレクトリ内容の一覧のトップに、「名前 容量 種類 日付」というリンクが表示されて、簡単に切り替えられるんですけど。

●AppleScriptCGIの制約

 検証が不十分で、web共有の制限なのか、AppleScriptの制限なのか不明ですが、AppleScriptで書かれた同じ名前のCGIスクリプトは同時に1つしか走りません。正確に言うと、同じ名前のスクリプトは2つ同時に走りますが、最初に起動した方に引き渡されるため、名前が同じものが二つあると誤動作します。

 階層Aと階層Bにそれぞれ同じ名前の別のAppleScript CGIを置いておけば、呼び出し先が違うから大丈夫、と思うとこの罠にはまります。


ホームHTMLに役立つヒントADSLでMACサーバ・実験室 > web共有のメモ