Softbank一部端末のCache-Controlのお行儀が悪い件
今のところ830CAという端末だけ確認できたのだけど、メモ。
何が起きるのか
簡単に言うと、
HTMLに「Cache-Control: no-cache」
が指定されている場合、そのページにあるあらゆる画像が保存できなくなる。
ということ。
これによる影響は結構限られてくるとは思うけど、私がハマったのは以下の事例。
画像保護
Softbankの画像保護でよく使われるのは
- 保存可能
- 転送(メール・SDカード・赤外線等)禁止
という組み合わせが多いと思う。著作権保護コンテンツというやつですな。壁紙なんかが多い。
公式Docにも説明がある通り、これには2通りの実現方法があって
- A.拡張子を*.jpg→*.jpz / *.gif→*.gizにする
- B.Headerに「X-JPHONE-COPYRIGHT: no-transfer,no-peripheral」を設定する
が通例。X-JPHONE-COPYRIGHT: no-store,no-transfer,no-peripheralってやると保存もできない。
画像保護の時の罠
画像をプログラムで吐いてる時なんかに陥りやすいんですけど、Softbank端末の罠の1つに、
- 画像のヘッダにCache-Control: no-cache
等があると保存できなくなるという事態になるので、画像を出力する際はCache-Controlヘッダを除くか適切なキャッシュ期間を設定してやる必要があったりします。
HTMLに乗せると...
上記の「保存可能、転送禁止」を仕掛けた画像をHTMLに乗せて公開した時に上記の影響を受けます。
830CA(ほかにもあるかも)以外の端末、Softbankの通常端末では意図通りに保存可能、転送禁止になってくれるんですが、830CAでは上記制約(仕様?)のおかげで画像が一切保存できないという悲惨な事態に。端末依存の現象なので、実機を持っていないと恐らく気が付けないというのもまた困りもの。
携帯サイト怖い。