質問: いつも大変お世話になっております。 現在、ASPからMDBに接続して利用者情報が登録されたユーザーのみファイル閲覧が可能な 簡易ファイル閲覧サイト(以下、閲覧サイト)を構築しております。 WEBサーバはWindows 2008 R2/IIS7.5を利用し、「匿名ユーザー」を有効にしています。 【IIS公開フォルダの構成】 [AAAA](公開ディレクトリ) ┗BBBB.MDB(利用者情報等を格納。) ┗LOGIN.ASP(MDBと連携してログイン認証。) ┗MENU.ASP(LOGIN.ASPで認証後の遷移先。DOC内のpdfのリンク集。) ┗[DOC] ┗0001.pdf(複数ページ有り) ┗0002.pdf(複数ページ有り) ┗0003.pdf(複数ページ有り) ※[]で囲むものはディレクトリ 閲覧を行う端末はiPad(iOS 9.2.1/Safari 601.1)を想定しています。 上記環境で閲覧サイトを利用した場合、履歴に残ったURLにアクセスすることで LOGIN.ASPを通らずに[DOC]内のファイルが閲覧可能になってしまいます。 http://[サーバアドレス]/AAAA/DOC/0001.pdf 上記問題を解決するために、[DOC]内のpdfをiFrameタグ・OBJECTタグ・EMBEDタグを利用して HTML内にpdfを埋め込みASP側で制御できないか試しましたがSafariが上記タグに対応しておらず、 正しくpdfが表示できないため解決できませんでした。 LOGIN.ASPを通ったもののみが[DOC]内のファイルにアクセス可能にするにはどのような対応策があるか ご教授いただけないでしょうか。よろしくお願い致します。
回答: 現在の構成だと pdf ファイルを開くときに認証がないので、pdf ファイルを直接リンクで開くのではなく、表示するための view.asp ファイルを作成して、view.asp?file=0001 のように呼び出して、表示する必要があると思います。 vew.asp 処理の一例 1.認証されているか確認する。 2.httpヘッダを出力する。 Content-Type: application/pdf 3.指定されたファイル名の pdf ファイルをバイナリモードで、読み込み、出力する。