11

PHPページのrequest.phpによってオンザフライでレンダリングされた画像があります。この画像は、含まれるデータの性質上、キャッシュできません。request.php によってレンダリングされる画像は、ユーザーの Cookie に依存します。IE8 と IE9 の両方から印刷しようとすると、request.php から返された画像をダウンロードしようとすると、これらの Cookie が要求ヘッダーで送信されません。これは、Fiddler を使用して要求/応答ヘッダーを監視することで判断しました。

当初は、request.php の URL に Cookie 情報を入れるだけでよかったのですが、これには問題があります。私が設定した Cookie は、httponlyフラグが設定された状態で作成されます (セキュリティ上の理由から)。つまり、スクリプトからこの Cookie にアクセスすることはできません。私はjQueryを使用して、次のようなものを使用して画像のソースを設定しますフラグ$("#myimage").attr("src", "request.php?d=" + dynamically_set_data_string);のため、このjQuery呼び出しにCookie情報を追加する方法はありません。httponly

src画像が大きすぎるため、base64 を使用して画像データを属性に直接含めることはできません(IE8 には 32KB の制限があります)。

印刷/印刷プレビュー中に作成されたキャッシュされていない画像の要求で、IE に強制的に Cookie を送信させるトリックはありますか?

4

1 に答える 1

0

調査の結果、IE が印刷時にキャッシュされていない画像のリクエスト ヘッダーで Cookie データを送信する方法がないようです。これを回避するために、イベントを使用してパラメーターを画像の URLwindow.onbeforeprintに追加します。cache=trueバックエンドで、画像のヘッダーを短時間キャッシュするように設定しました。これで問題は解決しませんが (本当の解決策があるとは思えないため)、問題は回避され、IE は画像を印刷できます。

于 2012-08-10T15:36:26.263 に答える