QA@IT
«回答へ戻る

回答を投稿

リロードしたい目的が見えないので期待に添うかわかりませんが、簡単な方法としてはGETパラメータを付加する、リファラを確認するなどがあるでしょう。

<!DOCTYPE html>
<html>
<head lang="ja">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script>
        $(function () {
            var urls = $(location).attr("href").split("?");
            var reloadedSign = "reloaded=reloaded";
            var reloadTo = (urls.length > 1 ? urls + "&" : "?") + reloadedSign;

            if($(location).attr("href").indexOf(reloadedSign) == -1
                    || document.referrer.indexOf(urls[0]) == -1 )
                $(location).attr("href", reloadTo);
        });
    </script>
</head>
<body>
    <script>
        document.write((Date.now()).toString());
    </script>
</body>
</html>

しかしGETパラメータもリファラも偽装できますので万能ではありません。

サーバーサイドならGETなら自動的に自分にPOSTするスクリプトを埋めてPOSTなら埋め込まないといった手もあります。
これも外部からPOSTすれば回避できます。

これ以上はどこまでやるかとそもそも目的がなにかに依ります。
たとえばキャッシュさせたくないのが理由であれば上記もあまりが意味ないでしょう。

リロードしたい目的が見えないので期待に添うかわかりませんが、簡単な方法としてはGETパラメータを付加する、リファラを確認するなどがあるでしょう。


```ここに言語を入力
<!DOCTYPE html>
<html>
<head lang="ja">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script>
        $(function () {
            var urls = $(location).attr("href").split("?");
            var reloadedSign = "reloaded=reloaded";
            var reloadTo = (urls.length > 1 ? urls + "&" : "?") + reloadedSign;

            if($(location).attr("href").indexOf(reloadedSign) == -1
                    || document.referrer.indexOf(urls[0]) == -1 )
                $(location).attr("href", reloadTo);
        });
    </script>
</head>
<body>
    <script>
        document.write((Date.now()).toString());
    </script>
</body>
</html>
```

しかしGETパラメータもリファラも偽装できますので万能ではありません。

サーバーサイドならGETなら自動的に自分にPOSTするスクリプトを埋めてPOSTなら埋め込まないといった手もあります。
これも外部からPOSTすれば回避できます。


これ以上はどこまでやるかとそもそも目的がなにかに依ります。
たとえばキャッシュさせたくないのが理由であれば上記もあまりが意味ないでしょう。