web-dev-qa-db-ja.com

サーバーにないスクリプトの期限切れヘッダーを追加するにはどうすればよいですか?

私はWebサイトを持っていて、すべてのページ/画像およびスクリプトに期限切れヘッダーを追加しましたが、外部スクリプトに期限切れヘッダーを追加する方法がわかりません。

たとえば、Google Analytics-有効期限ヘッダーが1日に設定されています。

グーグルは私の問題ではありません、外部のウェブサイトからの他のいくつかのスクリプトが本当の問題です、彼らは全然有効期限ヘッダーを持っていません。

20
DanTdr

自分のサーバーに送信されるリクエストへの応答にのみヘッダーフィールドを追加できます。リクエストが別のサーバー、たとえばGoogleのサーバーに送信される場合、リクエストに応答するのはGoogleのサーバーではありません。

したがって、問題の唯一の解決策は、外部リソースを自分のサーバーでホストすることです。ただし、それが可能なのは、そのリソースが静的であり、リクエストごとに変化せず、他のものに依存していない場合のみです。

21
Gumbo

唯一の方法は、外部サイトからコンテンツをダウンロードして必要なヘッダーを追加するスクリプトを作成することです。

<script type="text/javascript" src="http://external.example.com/foo.js"></script>

<script type="text/javascript" src="external.php?url=http://external.example.com/foo.js"></script>

そしてexternal.phpは次のようなものです

<?php
header("Expire-stuff: something");
echo file_get_contents($_GET['url']);

もちろん、これにはセキュリティホールがあるので、external.php?file = foo.jsのような識別子文字列を使用してから、

$files = array('foo.js' => 'http://external/...');
if(isset($files[$_GET['file']]))
{
  echo file_get_contents($files[$_GET['file']]);
}

もちろん、file_get_contents()は帯域幅の一部を取得するため、結果もキャッシュすることをお勧めします。

20
raspi

それは可能ではありません。

非推奨(常に可能とは限りません):静的コンテンツの場合は、スクリプトでプリフェッチし、独自のヘッダーを設定します。

2
echox

PHPを使用して外部ページを動的にロードできるため、元のデータを出力する前にヘッダーを送信できます。これは理想的なソリューションではありませんが、本当に必要な場合は、それを使用することをお勧めします。

<?php
header('expire-header');

echo file_get_contents('http://www.extern.al/website/url');
2
Joost

スクリプトごとに異なる有効期限を指定できるバージョンのコードを作成しました。

<?php

$files = array(
    'ga.js' => 'https://ssl.google-analytics.com/ga.js',
    'bsa.js' => 'https://s3.buysellads.com/ac/bsa.js',
    'pro.js' => 'https://s3.buysellads.com/ac/pro.js'
);

if(isset($files[$_GET['file']])) {
    if ($files[$_GET['file']] == 'ga.js'){
        header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + ((60 * 60) * 48))); // 2 days for GA
    } else {
        header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // Default set to 1 hour
    }

    echo file_get_contents($files[$_GET['file']]);
}

?>

詳細: https://www.catswhocode.com/blog/php-how-to-add-expire-headers-for-external-scripts

0
CoderCat

できません。

ファイルをホストしているものに電子メールを送信して、有効期限ヘッダーを適用するように依頼してください。

0
Linus

これらのページのテストを忘れないでください...いくつかの推奨事項は役立つかもしれませんし、それらのいくつかは何もできません。自分のファイルでできることは何でもしてください。外部のファイルについては気にしないでください。

0
Avni Yayin