[1] Refresh:
は、指定した秒数が経過した後に
navigate を開始するべきことを示す HTTPヘッダーです。
<meta http-equiv=Refresh>
は、
同じく HTML プラグマ指令です。
[2] HTML 4.0 には例示 (>>8) がある (4.01 にはない) けど、一般に使われているパラメーター型 (>>12; 例: >>3) ではなくて読点区切型 (>>13; 例: >>5) になってる。
[9] >>12 のようにパラメーターの属性名は URL になっていて、実際中身が URL でない URI である例は見たことが無いけど、 URL でない URI に対応している実装は、あえて URL に限定することなく、どんな URI でも受け付けるのが良いと考えられる。
[17] refresh-second (>>14) 秒後に (一度だけ) 指定 URL または自 URI を読む (そしてそれに移動する)。 (refresh-second 秒毎に URI を読むわけではない。)
[18] refresh-second が "0" の場合、実質的に (標準的な) HTTP の redirect と同じになる。 でも Netscape の説明文 (>>9) はこんなことも言ってるぞ。
a "Refresh" header can be returned as part of any HTTP response, including a redirection. So a single HTTP response can say "go get this URL now, and then go get this other URL in 10 seconds".
("Refresh" 頭は redirect を含む任意の HTTP 応答の一部として返すことが出来ます。ですから単一の HTTP 応答で「この URL に今行き、それからこの別の URL に10秒後に行くように。」と言うことが出来ます。)
This means you can have a continuous random URL generator! Have a normal random URL generator (such as URouLette http://kuhttp.cc.ukans.edu/cwis/organizations/kucia/uroulette/uroulette.html) that returns as part of its redirection response a "Refresh" directive that causes the browser to go get another random URL from the random URL generator in 18 seconds.
(これは継続無作為 URL 生成器を作れることを意味します! 普通の無作為 URL (例えば URouLette
[19] WAI とか HTML4 はアクセス性の観点から使用しないように薦めている。 (確かに、 >>18 の Netscape の言ってる例は面白いけど、遊び以外でやられたらたまらんわな。)
[20] value (>>16) の部分は、他の頭欄の作法からすると http-token 以外の文字は quoted-string にしないといけないはず。
[21] この頭欄は HTML の META要素 で使われる (例: >>6) 事が多い。 HTTP で見かけることはあまりない。 (皆無ではない。) HTTP 頭欄なのに HTTP で使ってもらえないなんて不憫だね。
[22] META 要素の属性値で既に「"」で囲まれているので、その中で更に (「"」で) 囲もうとする意識は無い。みっともないし。 そもそもその必要性に気付かないのだろうかね? ってことで、 主に CGI 出力 (Web chat の CGI script とか。) で、 http-token 以外が生で出てきたりする (>>24)。
※ (>>24) 「=」が URL に含まれるので quoted-string にするべき。 それから「&」は「&」でないと HTML として異常。
[25] そもそも URI は(絶対だと)「:」を含むので http-token にはならないことも多いじゃないか。
[27] Netscape 社の説明文によると絶対 URL のみで相対 URL は使ってはいけない。けど、現実には結構使われている。
[28] fragment は要らないでしょう。多分。 あってもそこに飛ぶのはあんまり好ましくないような... (それを言うなら Refresh: 欄自体あっても飛ぶのは宜しくないなあ。)
[29] >>28 なんで? 利用者にとってはちょっとあれだけど、一定時間後に下のほうに飛ぶとかあってもよさそう。
[30] 属性名が「URL」だから、URN とかは駄目なのかなあ...
[33] CGI の出力で、例えば Web chat CGI script で名前とかが URI符号化されてなかったりすることもままある。 それだと URI としてすら正しくない。 そんなのまで救済 (>>32) してあげる必要があるのかどうか。
[40] Opera (6.05 で実験) は、 "
で囲まれていると、 "
も URI の一部 (すなわち、 URI 符号化されていない不適切な相対 URI)
とみなして、そこに飛ぼうとしますから、 (ふつう) 404 となります。
[41] (>>40) ですから "
をはずせばよいのですが、この時 URI に ;
が含まれていると、そこを url] パラメーター (>>12)
の終わりとみなしてしまいます。対処法はその URI の性質に応じて &
に置き換えるなり URI 符号化するなりするしかありません。
[42] NetscapeNavigator 2.01 は、 >>41 と同様に ;
があると問題が起こります。 (>>40 の "
は問題ありません。)
[43] WinIE 3.02, WinIE 5.5, Mozilla などでは今のところ問題は確認されていません。
[44] HTML の meta 要素と HTTP の頭欄の一方だけにしか対応していない UA はまだ見つかっていません。
0
にしても表示されてから飛び始めるまでにちょっと間があります。 (Moz ならすぐに飛び始めるのに。) IE はレンダリングその他全て完了した後に処理を始めるんでしょうか? (Moz もそうだと思うんだけどなあ。) (単に IE がのろいだけとか?)'
quote) でも動いてしまいました。っていうかいままでうっかり間違って '
で quote してました。 (ってことは最新の Mozilla でも動くのか?)'
で引用してもよいことにされたらしいですが、気持ち悪いなあ。 (value
として解釈するなら、 '
は token
の一部と解釈するのが正しい。)url
引数の引用符[405] テスト (HTML): Index of /~wakaba/-temp/test/html/meta/http-equiv/refresh ( 版) http://suika.fam.cx/~wakaba/-temp/test/html/meta/http-equiv/refresh/ の squote、dquote
[406] (HTML) Firefox 3.0.5、Opera 9.61、Chrome 1.0.154.36、
WinIE7 のいずれも、 url="double-quoted"
と
url='single-quoted'
の両方に対応していました。
[408] テスト (HTTP): Index of /~wakaba/-temp/test/http/refresh ( 版) http://suika.fam.cx/~wakaba/-temp/test/http/refresh/
[409] (HTTP) Firefox 3.0.5、Safari 3.2.1、
WinIE7 のいずれも、 url="double-quoted"
と
url='single-quoted'
の両方に対応していました。
Opera 9.61 は url="double-quoted"
に対応していましたが、
url='single-quoted'
には対応していません
('single-quoted'
という URL とみなします)。
[410] Bug 6464 – Support meta refresh with quotes ( 版) http://www.w3.org/Bugs/Public/show_bug.cgi?id=6464
[97] しばしば、サーバー側での HTTPリダイレクトを設定するのが困難な場合の代替として使われます。
[34] Web chat の CGI script などで、飛び先が HTTP の 304 Not Modified 応答を返すように仕向けることがあるみたいです。
これを受け取ったら refresh 元のの表示を続けるのはいいとして、また指定秒数待って飛ぶのが適切かどうかはわかりません。
[35] 205 No Content も考慮する必要がありますね。
[86] 構文解析器または DOM 操作により Refresh
の meta
要素が文書に挿入された場合、
content
属性値の構文解析を行います。
[108] 要素が文書に挿入された時、次のようにしなければなりません >>85。
[151] 共有宣言的更新手順群は、 文書、入力、メタ要素について、次のようにします >>85。
[112] 文書は、 これから宣言的に更新するフラグを持ちます。 初期値は偽です。 HTML Standard
[125] 文書と入力の処理は、次のようにしなければなりません >>85。
[92] 利用者エージェントは、指定時間経過後に navigate することができます。
[130] これが最も一般的で、著者が想定する実装方法です。
[88] 待つ時間は利用者や利用者エージェントによる調整が認められています。 仕様書にはその意図は明記されていませんが、利用者が視認できない速さで navigate が実行されることを利用者が望まない時にこれを緩和したり、 高頻度で navigate を繰り返す悪意ある Webページに利用者が惑わされることを防いだり、 裏側で動作するWebページの navigate を遅延させて電力消費を抑えたりできるようにすることを企図していると思われます。
[87] 更新の期限が到来したら、
次のようにしなければなりません >>85。
[104] 利用者エージェントは、利用者が利用者による停止フラグを真に設定する手段を提供することが認められています >>85。一般的な Webブラウザーでは、中止ボタンがこの機能を持っています。
[95] 利用者エージェントは、タイマーの状態やリダイレクト先などを随時表示して構いません >>85。 一般的な Webブラウザーではそのような表示は見られませんが、便利そうではあります。
[93] 利用者エージェントは、手動で navigate することを選択できる利用者インターフェイスを提供することができます。
[91] その場合、利用者の指示により、次のようにしなければなりません >>85。
[129] 現在の Webブラウザーではそのような利用者インターフェイスの提示は一般的ではありませんが、
かつてはテキストブラウザーなどで Refresh
を通常のハイパーリンクのような形で表示するものがありました。
[94] 利用者エージェントは、何もしないことも認められています。
[96] 全く何もしないのは、 Web互換では無いかもしれません。
しかし mailto:
や telnet:
への navigate などは無効にできた方が嬉しいかもしれません。
[416] リンク型 redirect
は、 XHTML2
の第4次案で検討対象として挙げられていました。
「http-equiv
の機能で XHTML2 に欠けているもの」
とされているので、 <meta http-equiv=refresh>
の代替として検討されていたものと推測されます。
Refresh: 0
が数回続いたら中断、とかがいいんでしょうか。Refresh: 0
で飛んだら履歴 (「戻る」ボタンのメニュー) から飛び元の頁を消しますね。 (WinIE 5.0 くらいからだったっけ?)Refresh:
欄に対応しているんを確認しましたRefresh:
に対応していない UA や設定で切られている場合を考慮して、本体 (HTML など) でもハイパーリンク (a 要素など) を用意しておくのが望ましいでしょう。Refresh
が当該資源になっていることが、特に海外のサイトでしばしばあります。何を狙っているのか知りませんが、何か異様な気がしてすきになれません。Refresh:
指定の存在を即座に示す UI が無いのももんだいでしょう。 w3m などだと Refresh:
を頁の上のほうにリンクとしてレンダリングします。404
などのエラー時の出力に Refresh
で、エラー報告を数秒した後にそのサービスのトップ頁に飛ばすようなのがよくあります。これは bad practice だと思います。 URI を手入力して typo してしまって、直そうと思ったら次の URI に飛んでしまうとか。 (ブラウザの界面の実装の問題ではありますが。) [71]
鯖移転による URI 変更の告知などは、 Refresh
ではなく、
301
+ Retry-After
を使いましょう。
(名無しさん)
[73] netscape4.xでの動作 http://www.parkcity.ne.jp/~chaichan/qanda/qa6139.htm
METAタグよりも前にjavascriptを記述すると、画面遷移してくれないようでした。
(名無しさん [sage])
[74]
Refresh
とは関係ありませんが、最近のWebブラウザ、特にタブ・ブラウザには特定時間毎の自動再読込機能がついているものが多いようです。
(名無しさん [sage] 2006-02-06 14:07:50 +00:00)
[75]
Bug 83265 – UAAG: Add a way to disable HTTP-EQUIV=refresh (block automatic meta redirection, lock on current page) (2007-02-09 08:28:26 +09:00
版) https://bugzilla.mozilla.org/show_bug.cgi?id=83265
(名無しさん)
[76] A blog? with Σαιτω - Kestrel - auto-refresh ( 版) http://d.hatena.ne.jp/saiton/20070718/1184716567
[407] 念のため name=refresh
として確認してみましたが、
どの Webブラウザもちゃんと無視しました。
[411] 携帯アフィリエイトバイブル -携帯で稼ぐ- 携帯・PC振分け(PC拒否)方法<初心者版> ( 版) http://upup.blog3.fc2.com/blog-entry-184.html
[412] Techniques for WCAG 2.0 ( ( 版)) http://www.w3.org/TR/2012/NOTE-WCAG20-TECHS-20120103/complete.html#F58-description
[413] IRC logs: freenode / #whatwg / 20120724 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20120724#l-885
[414] Web Applications 1.0 r7697 Match reality ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7696&to=7697
[415] 3248 – HTTP headers are not passed on to main NGLayout code [IMPORT] ( ( 版)) https://bugzilla.mozilla.org/show_bug.cgi?id=3248
[418] The Performance Impact of META REFRESH - IEInternals - Site Home - MSDN Blogs ( ( 版)) http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/meta-refresh-causes-additional-http-requests.aspx
Refresh
[77] Refresh HTTP Header - otsukare ( 版) http://www.otsukare.info/2015/03/26/refresh-http-header
[78] Add "metarefresh" context. Fixes https://www.w3.org/Bugs/Public/show_bug... · whatwg/fetch@be254da ( 版) https://github.com/whatwg/fetch/commit/be254dafad562943edca3541517fd8018f14f75d
[79] Bug 28361 – Ambiguity in the context value for content loaded through <meta http-equiv=refresh> in a frame/iframe ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=28361
10.35 Refresh
TBS
Refresh is no longer in the HTTP/1.1 document -- it has been deferred to
HTTP/1.2 (or later).
[82] An Exploration of Dynamic Documents ( 版) http://web.archive.org/web/20020802170847/http://wp.netscape.com/assist/net_sites/pushpull.html
[83] Part2 - browsersec - Browser Security Handbook, part 2 - Browser Security Handbook - Google Project Hosting ( 版) https://code.google.com/p/browsersec/wiki/Part2#Redirection_restrictions
[84] A client request is also indicated by "metarefresh". https://www.w3.org/... · whatwg/fetch@1c7171d ( 版) https://github.com/whatwg/fetch/commit/1c7171ddf4f41568b4c94ad307ce8609a603d91a
[99] 28361 – Ambiguity in the context value for content loaded through <meta http-equiv=refresh> in a frame/iframe ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=28361#c3
[100] Make the ';' optional in parsing meta refresh · whatwg/html@0a3dcdf ( 版) https://github.com/whatwg/html/commit/0a3dcdfa15d73334ba6c2a0a12c2f139d526da5a
[101] Better match Gecko in parsing of meta refresh · whatwg/html@94750dc ( 版) https://github.com/whatwg/html/commit/94750dc5f3ffca7c6b54a79b86526a39b2cbff14
[102] URLs are parsed and produce records · whatwg/html@30bc255 ( 版) https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44
[103] Fix #823: Don't strip characters from the URL in meta refresh · whatwg/html@543d8c1 ( 版) https://github.com/whatwg/html/commit/543d8c1598bf5bff0b8febc50dff11dcb42f8768
[106] 28520 – Should the sandboxing flags be captured when setting up the refresh? () https://www.w3.org/Bugs/Public/show_bug.cgi?id=28520
[107] Snapshot the node document used for <meta> refresh (domenic著, ) https://github.com/whatwg/html/commit/c4c68db6b09172f69ad51ffd96e868a4c1c87907
[90] 「Refresh
は W3C が非推奨だといっている」という説がありますが、
どうやら W3C の作業部会が 2000年に Note として公開した後十数年間放置されていてメンテナンスされていない文書
>>89 が根拠とされているようです。
[89] HTML Techniques for Web Content Accessibility Guidelines 1.0 ( 版) https://www.w3.org/TR/2000/NOTE-WCAG10-HTML-TECHS-20001106/#meta-element
[142] 誰かが駄目だと言っているから駄目だ、というのではなく、書かれている理由に納得できるかどうかで考えた方が建設的じゃないですかねぇ。 現在の HTML 仕様である HTML Standard には使うなとは一言も書かれていないので、 後はその場その場で適切かどうかの判断と、宗教の問題でしょう。
[143] Masato Kinugawa Security Blog: Googleのmetaリダイレクトに存在した問題 () http://masatokinugawa.l0.cm/2012/03/googlemeta.html
[144] IE6/7の<meta refresh>では「;」で区切ってURLが複数指定できる問題 - 葉っぱ日記 () https://d.hatena.ne.jp/hasegawayosuke/20120301/p1
[145] Allow decimals with no leading 0 as the time in refresh <meta> (domenic著, ) https://github.com/whatwg/html/commit/b8a34e302cdf0289f5403a02905629bb358519a6
[146] Meta refresh: time without leading zero; e.g. content=".9; url=foo" · Issue #2844 · whatwg/html () https://github.com/whatwg/html/issues/2844
[147] Allow ".9" as the time in refresh <meta> by domenic · Pull Request #2852 · whatwg/html () https://github.com/whatwg/html/pull/2852
[148] Ensure Refresh pragma always uses a URL record (annevk著, ) https://github.com/whatwg/html/commit/64ea79523e6565070c9f5af7397a8104d7841cf9
[149] Ensure Refresh pragma always uses a URL record by annevk · Pull Request #2865 · whatwg/html () https://github.com/whatwg/html/pull/2865
[150] Define the HTTP Refresh header (annevk著, ) https://github.com/whatwg/html/commit/7e9f6b6ffe2119f43f909f71773a25a7e8a61ca7
[157] 28339 – <meta refresh> Specify Refresh HTTP header () https://www.w3.org/Bugs/Public/show_bug.cgi?id=28339
[158] Documenting Refresh: HTTP header · Issue #138 · httpwg/http-extensions () https://github.com/httpwg/http-extensions/issues/138
[159] Refresh HTTP Header - otsukare () http://www.otsukare.info/2015/03/26/refresh-http-header
[160] 28563 – As in most cases the http-equiv meta tags are equivalent to their corresponding HTTP header, would i [...] () https://www.w3.org/Bugs/Public/show_bug.cgi?id=28563
[161] Define the HTTP Refresh header by annevk · Pull Request #2892 · whatwg/html () https://github.com/whatwg/html/pull/2892
[114] Editorial: use "isomorphic decode" for Refresh header steps (irrationalRock著, ) https://github.com/whatwg/html/commit/bef6f783084cdb6e591f2a9d8c731180413e8ef2
[115] Changed Comment to Mention "isomorphic decode" by irrationalRock · Pull Request #3941 · whatwg/html () https://github.com/whatwg/html/pull/3941
meta
要素が文書に挿入された場合の他に、 navigate においてRefresh:
ヘッダーが指定されていた場合にも、実行されます。