ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 13 years ago

Closed 13 years ago

#3113 closed defect (fixed)

SSLモード時にIEでファイルダウンロードが行えない

Reported by: kiwa Owned by: akamine
Priority: major Milestone: OpenPNE2.12.6
Component: 指定しない Version: 2.10.x & 2.12.x & 2.14.x
Keywords: OpenPNE2.10.12 OpenPNE2.13.5 Cc:

Description (last modified by akamine)

■現象

OPENPNE_USE_PARTIAL_SSL(特定ページだけのSSLを使用するかどうか)がtrueの状態でファイルダウンロードのリンクをクリックすると、エラーのダイアログが出てきてファイルのダウンロードが行えない。

発生ブラウザ

  • WindowsXP SP3
    • IE6
    • IE7

※ 同OS Firefox3,Safari3,Opera6 では発生せず
※ Macは未検証

■原因

IEの既知の不具合

  • (詳細は関連情報のurlを参照してください。)

■修正内容

各ダウンロードボタンからのdoファイルのheaderを修正

この修正によりIEからでもダウンロードボタンからダウンロードが行えるようになりました。

■関連情報

Change History (15)

comment:1 Changed 13 years ago by kiwa

Description: modified (diff)

comment:2 Changed 13 years ago by akamine

Owner: changed from nobody to akamine
Status: newassigned

対応します。

comment:3 Changed 13 years ago by akamine

Description: modified (diff)
Keywords: 確認中 added

以下のリビジョンを修正しました。

comment:4 Changed 13 years ago by akamine

Description: modified (diff)

comment:5 Changed 13 years ago by ebihara

Keywords: 差し戻し added; 確認中 removed

この変更では、 #2842 の現象が再発してしまいます。

comment:6 Changed 13 years ago by akamine

Description: modified (diff)
Keywords: 確認中 added; 差し戻し removed

以下のリビジョンを再度修正しました。

comment:7 Changed 13 years ago by shingo

Keywords: 差し戻し added; 確認中 removed
  • 不要な行がある
    webapp/modules/admin/do/csv_member.php
    
    46	        $original_filename = $file['original_filename']; 
    
  • 以下のインデントがおかしい
  • コメントをつける・つけないを統一したほうがいいと思います。
    webapp/modules/pc/do/h_message_file_download.php
    
    52	        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) { 
    53	            // IE の場合のみ、ヘッダを追加 
    54	        header('Cache-Control: public'); 
    55	        header('Pragma: public'); 
    56	        } 
    
    

comment:8 Changed 13 years ago by ebihara

追加でebiharaから指摘させてください。

  • IEの場合は「キャッシュをさせないヘッダ」を出力しない、という形で対処するべきではないでしょうか(明示的に Cache-Control ヘッダや Pragma ヘッダを出力する必要さえありません)
  • 既に IE の場合にファイル名の文字コードの変換をおこなっているファイルにおいても、もう一度 IE かどうかの判定をおこなってしまっています。こういうコードの書き方はメンテナンス性を著しく低下させる恐れがあるので控えてください

comment:9 Changed 13 years ago by akamine

Keywords: 確認中 added; 差し戻し removed

以下のリビジョンを再度修正しました。

  • 今回の修正はcomment:8を参考に修正しています。
  • その為、webapp/modules/admin/do/file_download.phpはもともと「キャッシュをさせないヘッダ」の記述がなかったため、修正を取り消しました。

comment:10 Changed 13 years ago by ebihara

Keywords: 差し戻し added; 確認中 removed
  • webapp/modules/pc/do/c_file_download.php と webapp/modules/pc/do/h_message_file_download.php にて、if文とelse文で同じようなヘッダを発行しています。comment:7 で指摘したようにこのようなコードの書き方はメンテナンス性を低下させ、バグの温床となりえるので危険です。
  • strpos() の返り値が false であるかどうかのチェックには必ず型のチェックもおこなってください。 strpos() は検索文字列が0文字目にヒットした場合は0を返します。つまりこのコードの書き方では、MSIEが0文字目に存在した場合はstrpos()が0を返すにもかかわらずfalseであると見なされ、正常な挙動になりません。 参考:http://jp2.php.net/manual/ja/function.strpos.php

comment:11 Changed 13 years ago by akamine

Keywords: 確認中 added; 差し戻し removed

以下のリビジョンを再度修正しました。

comment:12 Changed 13 years ago by ebihara

Keywords: 差し戻し added; 確認中 removed
  • webapp/modules/pc/do/h_message_file_download.php の修正後のインデントがずれています。
  • webapp/modules/pc/do/h_message_file_download.php のみ、修正後の以下のコメントが異なっています。日本語として不自然ですので他のファイルで修正していただいた表記にあわせてください。
    // IE の場合のみ、ファイル名を SJIS に変換と、キャッシュをさせないヘッダを出力しない
    
  • webapp/modules/pc/do/c_file_download.php の修正後のインデントがずれています。
  • ソースコードの構文チェックを実行したところ、 webapp/modules/admin/do/download_xml.php にて、以下のような syntax error が発生します。
     Parse error: syntax error, unexpected T_EXIT, expecting T_FUNCTION in webapp/modules/admin/do/download_xml.php on line 82
    

comment:13 Changed 13 years ago by akamine

Keywords: 確認中 added; 差し戻し removed

以下のリビジョンを再度修正しました。

comment:14 Changed 13 years ago by ebihara

Keywords: テスト待ち added; 確認中 removed

comment:15 Changed 13 years ago by kiwa

Keywords: テスト待ち removed
Resolution: fixed
Status: assignedclosed

確認しました。問題ありません。

Note: See TracTickets for help on using tickets.