[[OpenSocial/shindig/php版]]

** 呼び出されるクラス [#c8c02e29]
- src/gadgets/http/FilesServlet.phpのFilesServletクラス
- src/common/HttpServlet.phpのHttpServletクラス(modified headerやcache controllなどを担当)を継承している

** 動作 [#w588e222]
FilesServlet内のメソッドはdoGet()のみ
- REQUEST_URIからweb_prefix/gadgets/files/を取り除き、config.phpで指定されたjavascript_pathにアペンドする(これが$file変数)
- realpath()でconfig.phpのjavascript_pathと$file内のjavascript_pathのファイルシステム上の実際の位置を比較し、違いがあれば400 Bad Requestを返し終了(gadgets/files/../../ などの対策と思われる)
- file_exists is_readable is_file をチェックして不可ならば404 Not Foundを返して終了
- 上記まで問題なければ拡張子の判別とContentTypeの設定(HttpServletから継承のsetContentTypeメソッド使用)をする
-- html/htm であればtext/html
-- jsであればtext/javascript
-- cssであればtext/css
-- HttpServletのデフォルトがtext/htmlなのでそれ以外のファイルはtext/htmlとして処理されるはず
- HttpServletクラスから継承のsetLastModifiedメソッドで$fileの変更時間をセット
- readfileで$fileを読み込み&出力(HttpServletクラスのコンストラクタでob_start()が使用されるので実際の出力はデストラクタによって行われる)


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

アークウェブのサービスやソリューションはこちら