GroupSession
# 環境* GS モバイルを契約せず無償版のみの Gsession* iPhone の内蔵ブラウザ(Safari)と、Chrome でテストを実施* GroupSessionバージョン: 4.7.2* OS: Linux 64bit 4.4.0-98-generic (Ubuntu Server 16.04 LTS)* Java バージョン: java version "1.8.0_151"* Web サーバ: 使用しておらず Tomcat 単体のみ* Tomcat 単体での動作: 動作する* ログのエラー出力: なし* ファイアウォール: 使用していない# 問題の再現方法* 掲示板に、2ページ以上ある PDF ファイルを添付する* iPhone 等の iOS デバイスからその PDF ファイルを開く上記の手順で、PDF ファイルの1ページ目しか表示されません。自分で詳細を調べたり、検証してみてなんとなくあたりがついていることを記載します。iOS は、どうやら HTTP の Range header をサポートしていないと正しく PDF ファイルをページ inline で表示できない模様?下記が非常に参考になります。https://stackoverflow.com/questions/7585610/jsf-streaming-pdf-on-ios-devices手元で試した結果、Tomcat の webapps/ROOT/ ディレクトリ中であれば--Accept-Ranges: bytes--レスポンスヘッダを返し、リクエストで例えば--Range: bytes=0-20--等として PDF ファイルへアクセスすれば、HTTP Status 206(Partial Content) で返ってきます。ところが、webapps/gsession ・・というか Gsession の掲示板に添付した PDF ファイルでは、Range ヘッダをつけてリクエストを送っても、Accept-Ranges ヘッダをレスポンスで得られずHTTP Status 206(Partial Content) で返ってこずに 200 OK でフルサイズで PDF データがレスポンスとして返ってきます。おそらく、この挙動が問題となって、iOS では正しく PDF ファイルを表示できないのではないか?とあたりをつけているのですが、こちらについてバグであれば修正して頂けないでしょうか?iOS 以外では発生しないみたいなので、非常にニッチなニーズかもしれませんが、ご対応頂けると幸いです。また、私の解釈がもし間違っていれば、それについてもご指摘頂ければと存じます。おそらくソースコードに手を入れるとしたら、TempFileUtil.java の 383行目で定義されている、__download メソッドの中で、iOS の場合のみ res.setHeader で Accept-Ranges: bytes を返してやるような実装に加え、実際に Range ヘッダ付きのリクエストが来た際には適切に処理して Partial Content で返す等の実装も必要?のように思っています。そうではなくて、例えば Tomcat の設定を変更する等でコードは変更せずに対応できるとかもしあれば、それについてもご教示頂ければ幸いです。長文になってしまい申し訳ありません。以上、どうかご検討ご教示の程よろしくお願い致します。
引き続きこの問題について調べているのですが、Range ヘッダのサポート有無が影響しているのか、それとももしかすると下記が関係しているかもしれません。After iOS8 upgrade, safari can't display PDF in iframes againhttps://discussions.apple.com/message/26661547#26661547Group Session では掲示板に添付された PDF ファイルは、iframe を使って表示しようとしていますか?
TOP