2016-09-20 14 views
0

現在、スタンドアローンのスライドショーアプリで、CSSアニメーション画像と音楽を表示しています。画像と曲をノンスで読み込んでいます

これまでのところ、画像と音楽は実際の場所から直接ロードされただけです。つまり、この場所とファイルに完全にアクセスできるようにする必要があり、誰でもアプリを使わずに直接画像や曲を開くことができました。これは試作と打ち上げには問題ありませんでしたが、今では盗難に対するより高度な防護が必要です。

間違ってはいけません:本当の保護はありません。私はちょうどそれがダイレクトダウンロードになるときに人々に苦労したいです。メディアファイルに直接リンクする方法はありません。ここで

は私が思い付いたものです:

  • イメージと曲はPHPによってロードされている - あなたは、パラメータとしてIDを指定し、PHPは、場所を検索し、見つかった場合は、ファイルを提供しています。さらに、パラメータとして提供されたナンスが有効である(存在し、30秒を超えていない)場合にのみ、ファイルが提供されます。ノンスはPHPによって生成され、$_SESSION['nonce']変数に格納されます。 - 生成するマークアップで使用>セッションが節約とナンス値を返す、生成するための

    • (string) generateNone():私のアプリで
      <audio><source src="song/songid?nonce=[[nonce]]"></audio>

    • <img src="image/imageid?nonce=[[nonce]]">、私は3つの機能を持っています

    • (bool) validateNonce() nonceが有効かどうかを確認し、後で削除して再利用できないようにする
    • (void) initNonces()セッションからすべてのノンスを削除します。この関数は、アプリケーションが読み込まれるたびに呼び出され(未使用のnoncesの蓄積を防止するために、もちろんイメージや曲のサービスは含まれません)。

問題:

理論的には、この全体的なアイデアの作品。実際に、私は2つの問題に遭遇した私が解決することはできません。

  1. 画像はブラウザで再読み込みしているように見える:画像はjQueryの/ JavaScriptを使用して変更された場合(「非表示画像1、ショーの画像2」や「隠す例えばイメージ4、イメージ5を表示)、ノンスがもはや有効ではないのでイメージは読み込めません(=はすでに1回使用されています)。検証後にノンスの削除を止める(=ノンスを​​再利用する)ことでこの問題は解決しますが、これは実際の解決策ではありません。この問題は問題2に関連している可能性があります。なぜなら、jQueryはCSSプロパティを変更してイメージの表示と非表示を変更するだけだからです。

  2. 画像と曲は、ノンスライフタイムの後にロードされます。ブラウザは、画像が表示されたときに初めてCSSによって隠された画像を読み込んでいるようです。これは通常、帯域幅使用量を減らすのに役立ちますが、私のシナリオでは、ノンスライフ30秒後に画像や曲が読み込まれるのを防ぎます。ブラウザにすべてのものを直接ロードさせる方法や、少なくとも30秒の時間内に要求されたイメージ/ソングへの接続を開いて保持する方法が必要です。

質問:

私がブラウザが内部プロセス媒体ローディングは私に説明している問題を解決する方法についてのヒントを与えることができる方法を知っている誰かを願っていますので、実際の問題を特定することは困難です。あなたがコードを必要とする場合は、私に知らせてください。

答えて

0

私はほんの数分後に尋ねると答えるため申し訳ありません - しかし、私は、検索の時間後に解決策を見つけたと私はそれが同様の問題に沿って来て、誰かのために役立つかもしれないと思う:

私はjQueryのclone()を使用していました/ remove()画像のCSSアニメーションを再開する。私が知らなかったのは、これが要素を複製しただけでなく、元のHTMLマークアップのようにすべてのメディアを再読み込みしたということでした。画像が再ロードされていて、nonceが既に使用されていたために問題が発生しました。

関連する問題