0

いくつかの静的 pdf ファイルを提供する必要がある Web アプリケーションを開発しています。デスクトップと iOS ではすべて問題なく動作しますが、静的ファイルは Android ではダウンロードされません。ダウンロードがハングするだけです。これがどのように見えるかのスクリーンショットです:

https://www.dropbox.com/s/r3qz9cia9vwwgam/2012-08-22%2020.38.37.png

Android のバージョンは 4.1.1 です

nginx のバージョンは次のとおりです。

$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.2.3
built by gcc 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-1.2.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module

nginx 構成の主要部分は次のとおりです。

server {
    server_name .foosite.com;
    listen 443;

    ssl on;
    ssl_certificate /etc/ssl/certs/foo.crt;
    ssl_certificate_key /etc/ssl/private/foo.key;

    access_log logs/foo.log;

    gzip                on;
    gzip_http_version   1.0;
    gzip_comp_level     2;
    gzip_proxied        any;
    gzip_min_length     1100;
    gzip_buffers        16 8k;
    gzip_types          text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    # Some version of IE 6 don't handle compression well on some mime-types, so just disable for them
    gzip_disable "MSIE [1-6].(?!.*SV1)";

    # Set a vary header so downstream proxies don't send cached gzipped content to IE6
    gzip_vary on;

    location / {
        # some proxy_pass stuff here        
    }

    location /media {
        alias   /foo/path/to/media/;
        expires 1y;
    }
}

curl を使用して取得した応答ヘッダーは次のとおりです。

$ curl -I https://foosite.com/media/path/to/foopdf.pdf
HTTP/1.1 200 OK
Server: nginx/1.2.3
Date: Thu, 23 Aug 2012 00:40:16 GMT
Content-Type: application/pdf
Content-Length: 136833
Last-Modified: Wed, 22 Aug 2012 21:14:50 GMT
Connection: keep-alive
Expires: Fri, 23 Aug 2013 00:40:16 GMT
Cache-Control: max-age=31536000
Accept-Ranges: bytes

また、ユーザー エージェント ヘッダーを提供することで、Chrome の Android ブラウザーを模倣しようとしました。

$ curl -A "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166  Safari/535.19" -I https://foosite.com/media/path/to/foopdf.pdf
HTTP/1.1 200 OK
Server: nginx/1.2.3
Date: Thu, 23 Aug 2012 00:33:09 GMT
Content-Type: application/pdf
Content-Length: 136833
Last-Modified: Wed, 22 Aug 2012 21:14:50 GMT
Connection: keep-alive
Expires: Fri, 23 Aug 2013 00:33:09 GMT
Cache-Control: max-age=31536000
Accept-Ranges: bytes

なぜこれが起こっているのかについてのアイデアはありますか? 繰り返しますが、この問題はすべての Android デバイス (Galaxy Nexus および Nexus 7) にのみ影響します。デスクトップおよび iOS デバイスでは問題なく動作します。また、SSL を無効にしてポート 80 でサービスを提供すると、すべて正常に動作します。

ありがとうございました。

4

0 に答える 0