සියලුම බ්‍රව්සර් හරහා වෙබ් පිටු හැඹිලි පාලනය කරන්නේ කෙසේද?


1575

සෑම බ්‍රව්සරයක්ම HTTP හැඹිලි නියමයන්ට ඒකාකාරී ලෙස ගරු නොකරන බව අපගේ පරීක්ෂණවලින් හෙළි වී තිබේ.

ආරක්ෂක හේතු මත අපගේ අයදුම්පත් යම් යම් පිටු හැඹිලිගත කිරීමට අවශ්ය නැහැ , මෙතෙක් කරන ලද වෙබ් බ්රවුසරය විසින්. මෙය අවම වශයෙන් පහත බ්‍රව්සර් සඳහා ක්‍රියා කළ යුතුය:

  • ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 6+
  • ෆයර්ෆොක්ස් 1.5+
  • සෆාරි 3+
  • ඔපෙරා 9+
  • Chrome

අපගේ අවශ්‍යතාවය ආරක්ෂක පරීක්ෂණයකින් ලැබුණි. අපගේ වෙබ් අඩවියෙන් ඉවත් වූ පසු ඔබට පිටුපස බොත්තම එබීමෙන් හා හැඹිලි පිටු බැලීමට හැකිය.


අයිපෑඩ් සෆාරි සඳහා පමණක් [මෙය] [1] උදව් කරයිද? [1]: stackoverflow.com/questions/24524248/…
බක්ෂි

සරලම දේ භාවිතා කරන්නේ: උපරිම වයස = 10. තත්පර 10 ක් සඳහා පිටුව හැඹිලිගත වන බැවින් මෙය පරිපූර්ණ නොවේ. නමුත් එය අවම "ශීර්ෂ ස්පැගටි" විසඳුමයි. එසේම, මෙය සමහර විට ප්‍රතිලෝම ප්‍රොක්සි භාවිතා කරන ගතික වෙබ් අඩවි වල විශාල කාර්ය සාධනයක් ලබා දෙයි. (ඔබේ මන්දගාමී php තිර රචනය සෑම තත්පර 10 වරක් නම් කරනු ලබන අතර පසුව තත්පර 10 ක් එක් වරක් ආපසු ප්රොක්සියක් මඟින් හැඹිලිගත ඇත නරඹන්නන් එක් වරක් වඩා හොඳ ක්රමයකි.)
Hello World


3
ඒ මහා ප්‍රශ්නයට ස්තූතියි. කුතුහලය සඳහා, "ආරක්ෂක හේතූන් මත" ලබන්නා එය සුරැකීමට අකමැති අතර සමහර දත්ත යැවීමට ඔබව පොළඹවයි . ඔබ දැනටමත් ඔවුන් යවා ඇත!
ගණකාධිකාරී م

1
C ගණකාධිකාරී: ඔහුගේ තත්වය තුළ, පරිශීලකයා ඉවත් වී ඇත. එම පරිශීලක-නියෝජිතයාගේ ඊළඟ මානව පරිශීලකයා දැන් ඉවත් වූ පුද්ගලයා බවට සහතික විය හැක්කේ කාටද?
ෆේබියන් හඩාඩි

Answers:


2622

හැදින්වීම

සඳහන් කළ සියලුම සේවාදායකයින් (සහ ප්‍රොක්සි) හරහා ක්‍රියාත්මක වන නිවැරදි අවම ශීර්ෂ කට්ටලය:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

මෙම Cache-Controlසේවාදායකයින් සහ බලගතු සඳහා HTTP 1.1 පිරිවිතර (සහ නිසැකයෙන්ම ඊළඟ සමහර සේවාදායකයින් විසින් අවශ්ය එක් වේ Expires). මෙම Pragmaප්රාග් ඓතිහාසික ගනුදෙනුකරුවන් සඳහා HTTP 1.0 පිරිවිතර අනුව වේ. මෙම Expiresසේවාදායකයින් සහ බලගතු සඳහා HTTP 1.0 හා 1.1 උපැස් අනුව වේ. HTTP 1.1 හි, Cache-Controlප්‍රමුඛතාවය ගනී Expires, එබැවින් එය HTTP 1.0 ප්‍රොක්සි සඳහා පමණි.

HTTPS හරහා පමණක් පිටු සේවය කරන විට IE6 සහ එහි කැඩුණු හැඹිලිය ගැන ඔබ තැකීමක් නොකරන්නේ නම් no-store, ඔබට මඟ හැරිය හැක Cache-Control: no-cache.

Cache-Control: no-store, must-revalidate
Pragma: no-cache
Expires: 0

ඔබ IE6 හෝ HTTP 1.0 සේවාදායකයින් ගැන සැලකිල්ලක් නොදක්වන්නේ නම් (HTTP 1.1 1997 හඳුන්වා දෙන ලදි), එවිට ඔබට මඟ හැරිය හැක Pragma.

Cache-Control: no-store, must-revalidate
Expires: 0

ඔබ HTTP 1.0 ප්‍රොක්සි ගැන තැකීමක් නොකරන්නේ නම්, ඔබට මඟ හැරිය හැක Expires.

Cache-Control: no-store, must-revalidate

අනෙක් අතට, සේවාදායකය වලංගු Dateශීර්ෂයක් ස්වයංක්‍රීයව ඇතුළත් කරන්නේ නම්, ඔබට න්‍යායාත්මකව Cache-Controlද අතහැර දමා Expiresපමණක් රඳා සිටිය හැකිය.

Date: Wed, 24 Aug 2016 18:32:02 GMT
Expires: 0

උදා: අවසාන පරිශීලකයා මෙහෙයුම් පද්ධති දිනය හසුරුවන්නේ නම් සහ සේවාදායක මෘදුකාංගය එය මත රඳා පවතී නම් එය අසාර්ථක විය හැකිය.

ඉහත සඳහන් පරාමිතීන් නිශ්චිතව දක්වා තිබේ නම් වෙනත් Cache-Controlපරාමිතීන් max-ageඅදාල නොවේ Cache-Control. මෙහි Last-Modifiedඇති වෙනත් බොහෝ පිළිතුරු වල අඩංගු ශීර්ෂය සිත්ගන්නා සුළු වන්නේ ඔබට ඉල්ලීම හැඹිලිය කිරීමට අවශ්‍ය නම් පමණි , එබැවින් ඔබට එය කිසිසේත් සඳහන් කිරීමට අවශ්‍ය නොවේ.

එය සකසන්නේ කෙසේද?

PHP භාවිතා කිරීම:

header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.

Java Servlet, හෝ Node.js භාවිතා කිරීම:

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setHeader("Expires", "0"); // Proxies.

ASP.NET-MVC භාවිතා කිරීම

Response.Cache.SetCacheability(HttpCacheability.NoCache);  // HTTP 1.1.
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.

ASP.NET වෙබ් API භාවිතා කිරීම:

// `response` is an instance of System.Net.Http.HttpResponseMessage
response.Headers.CacheControl = new CacheControlHeaderValue
{
    NoCache = true,
    NoStore = true,
    MustRevalidate = true
};
response.Headers.Pragma.ParseAdd("no-cache");
// We can't use `response.Content.Headers.Expires` directly
// since it allows only `DateTimeOffset?` values.
response.Content?.Headers.TryAddWithoutValidation("Expires", 0.ToString()); 

ASP.NET භාවිතා කිරීම:

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.

ASP.NET Core v3 භාවිතා කිරීම

// using Microsoft.Net.Http.Headers
Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store, must-revalidate";
Response.Headers[HeaderNames.Expires] = "0";
Response.Headers[HeaderNames.Pragma] = "no-cache";

සහකාර පොලිස් අධිකාරී භාවිතා කිරීම:

Response.addHeader "Cache-Control", "no-cache, no-store, must-revalidate" ' HTTP 1.1.
Response.addHeader "Pragma", "no-cache" ' HTTP 1.0.
Response.addHeader "Expires", "0" ' Proxies.

රූබි ඔන් රේල්ස් හෝ පයිතන් / ෆ්ලැස්ක් භාවිතා කිරීම:

headers["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
headers["Pragma"] = "no-cache" # HTTP 1.0.
headers["Expires"] = "0" # Proxies.

පයිතන් / ජැන්ගෝ භාවිතා කිරීම:

response["Cache-Control"] = "no-cache, no-store, must-revalidate" # HTTP 1.1.
response["Pragma"] = "no-cache" # HTTP 1.0.
response["Expires"] = "0" # Proxies.

පයිතන් / පිරමිඩ භාවිතා කිරීම:

request.response.headerlist.extend(
    (
        ('Cache-Control', 'no-cache, no-store, must-revalidate'),
        ('Pragma', 'no-cache'),
        ('Expires', '0')
    )
)

Go භාවිතා කිරීම:

responseWriter.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") // HTTP 1.1.
responseWriter.Header().Set("Pragma", "no-cache") // HTTP 1.0.
responseWriter.Header().Set("Expires", "0") // Proxies.

Apache .htaccessගොනුව භාවිතා කිරීම :

<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>

HTML4 භාවිතා කිරීම:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

HTML ප්‍රතිචාර ශීර්ෂයන්ට එරෙහිව HTML මෙටා ටැග්

දැනගැනීම වැදගත් වන්නේ HTTP සම්බන්ධතාවයක් හරහා HTML පිටුවක් සේවය කරන විට සහ HTTP ප්‍රතිචාර ශීර්ෂයන් සහ HTML ටැග් යන දෙකෙහිම ශීර්ෂයක් <meta http-equiv>ඇති විට, HTTP ප්‍රතිචාර ශීර්ෂයේ දක්වා ඇති දෙයට HTML මෙටා ටැගයට වඩා ප්‍රමුඛතාවය ලැබෙනු ඇත. HTML මෙටා ටැගය භාවිතා කරනුයේ පිටුව දේශීය තැටි ගොනු පද්ධතියකින් file://URL හරහා බැලූ විට පමණි . මෙයද බලන්න W3 HTML පිරිවිතර 5.2.2 පරිච්ඡේදය . වෙබ් සේවාදායකයට පෙරනිමි අගයන් ඇතුළත් කළ හැකි බැවින් ඔබ ඒවා ක්‍රමලේඛනගත නොකළ විට මේ ගැන සැලකිලිමත් වන්න.

සාමාන්‍යයෙන්, ආරම්භකයින්ගේ ව්‍යාකූලත්වය වළක්වා ගැනීමට සහ දෘ HT HTTP ප්‍රතිචාර ශීර්ෂයන් මත විශ්වාසය තැබීමට ඔබ HTML මෙටා ටැග්ස් සඳහන් නොකිරීම හොඳය . එපමණක් නොව, විශේෂයෙන් එම <meta http-equiv>ටැග් HTML5 හි වලංගු නොවේ . HTML5 පිරිවිතරයේhttp-equiv ලැයිස්තුගත කර ඇති අගයන්ට පමණක් අවසර ඇත.

සත්‍ය HTTP ප්‍රතිචාර ශීර්ෂයන් සත්‍යාපනය කිරීම

එකක් සහ අනෙක සත්‍යාපනය කිරීම සඳහා, වෙබ් බ්‍රව්සරයේ සංවර්ධක මෙවලම් කට්ටලයේ HTTP ගමනාගමන මොනිටරයේ ඔබට ඒවා දැකීමට / නිදොස් කිරීමට හැකිය. ඔබට Chrome / Firefox23 + / IE9 + හි F12 එබීමෙන් පසුව "ජාලය" හෝ "නෙට්" ටැබ් පැනලය විවෘත කිරීමෙන් පසුව HTTP ඉල්ලීම සහ ප්‍රතිචාරය පිළිබඳ සියලු තොරතුරු අනාවරණය කර ගැනීමට HTTP උනන්දුව ඉල්ලීම ක්ලික් කිරීමෙන් ඔබට එහි යා හැකිය. මෙම පින්තූරය උඩුගත කර පහත ක්රෝම් සිට ය:

Chrome සංවර්ධක මෙවලම් කට්ටලය HTTP ගමනාගමන මොනිටරය stackoverflow.com හි HTTP ප්‍රතිචාර ශීර්ෂ පෙන්වයි

ලිපිගොනු බාගැනීම් වලද එම ශීර්ෂයන් සැකසීමට මට අවශ්‍යය

පළමුවෙන්ම, මෙම ප්‍රශ්නය සහ පිළිතුර ඉලක්ක කර ඇත්තේ "වෙබ් පිටු" (HTML පිටු) මත මිස "ගොනු බාගැනීම්" (PDF, zip, Excel, ආදිය) මත නොවේ. වෙනස් කළ ගොනුවක් මත නැවත බාගත කිරීමට බල කිරීම සඳහා ඔබ ඒවා හැඹිලිගත කර URI මාර්ගයේ හෝ විමසුම් මාලාවේ කොතැනක හෝ ගොනු අනුවාද හඳුනාගැනීමක් භාවිතා කිරීම හොඳය. කෙසේ වෙතත් ගොනු බාගත කිරීම් වලදී එම හැඹිලි ශීර්ෂයන් යෙදෙන විට, HTTP වෙනුවට HTTPS හරහා ගොනු බාගත කිරීමේදී IE7 / 8 දෝෂය ගැන පරිස්සම් වන්න. වැඩි විස්තර සඳහා, IE හට foo.jsf බාගත කළ නොහැකි බව බලන්න. මෙම අන්තර්ජාල වෙබ් අඩවිය විවෘත කිරීමට IE ට නොහැකි විය. ඉල්ලූ වෙබ් අඩවිය ලබා ගත නොහැක හෝ සොයාගත නොහැක .


16
මෙය සම්පුර්ණ බවක් නොපෙනේ. IE 8 හි මම මෙම විසඳුම උත්සාහ කළ අතර ඔබ පසුපස බොත්තම එබූ විට බ්‍රව්සරය හැඹිලි අනුවාදයක් පටවනු ඇති බව මට පෙනී ගියේය.
මයික් ඔටුම්

16
ඔබේ පරීක්ෂණ ක්‍රමවේදය වැරදියි. සමහර විට පිටුව දැනටමත් හැඹිලියේ තිබේද? සමහර විට ශීර්ෂයන් වැරදි / ඉක්මවා ගොස් තිබේද? සමහර විට ඔබ වැරදි ඉල්ලීමක් දෙස බලා සිටියාද? ආදිය ..
BalusC

8
ඇත්ත වශයෙන්ම, මෙම ප්‍රවේශය අසම්පූර්ණ බවත් IE8 සමඟ ගැටළු ඇති කරන බවත් හෝ අවම වශයෙන් සමහර තත්වයන් යටතේ ඇති බවත් මම සනාථ කරමි. විශේෂයෙන්, එස්එස්එල් හරහා සම්පතක් ලබා ගැනීම සඳහා අයිඊ 8 භාවිතා කරන විට, අයිඊ 8 දෙවන වරටත් සම්පත ලබා ගැනීම ප්‍රතික්ෂේප කරනු ඇත (එක්කෝ හෝ පළමු උත්සාහයෙන් පසුව, භාවිතා කළ ශීර්ෂ මත පදනම්ව). උදාහරණයක් ලෙස එරික්ලෝගේ බ්ලොගය බලන්න .
haylem

21
මෙය අත්‍යවශ්‍යයෙන්ම ඇමරිකානු බැංකුව කරන දෙයක් බව එක් කිරීමට මම කැමතියි. ඔබ ඔවුන්ගේ ප්‍රතිචාර ශීර්ෂයන් දෙස බලා එය ඇස්පෙක්ස් බවට පරිවර්තනය කරන්නේ නම්, ඔවුන් කරන්නේ: ප්‍රතිචාරය.අපෙන්ඩ්හීඩර් ("හැඹිලි-පාලනය", "හැඹිලියක් නැත, ගබඩාවක් නැත, නැවත වලංගු කළ යුතුය"); ප්‍රතිචාරය.අපෙන්ඩ්හීඩර් ("කල් ඉකුත් වේ", "Thu, 1994 දෙසැම්බර් 01 16:00:00 GMT"); මම හිතන්නේ, එය ඔවුන්ට ප්‍රමාණවත් නම්, එය මට ප්‍රමාණවත්.
ජෝන්

8
O ජෝන්: එය කල් ඉකුත් වන ශීර්ෂකය හරියටම HTTP 1.0 පිරිවිතරයේ උදාහරණ අගය වේ . එය ක්‍රියාත්මක වන නමුත් හරියටම එම කාලරාමුව ගැනීම තරමක් හාස්‍යජනකය.
BalusC

248

(ඒයි, හැමෝම: කරුණාකර ඔබට සොයාගත හැකි සියලුම ශීර්ෂයන් සිහියෙන් තොරව පිටපත් කර අලවන්න එපා)

පළමුවෙන්ම, පසු බොත්තම් ඉතිහාසය හැඹිලියක් නොවේ :

නැවුම් බව පිළිබඳ ආකෘතිය (4.2 වගන්තිය) ඉතිහාස යාන්ත්‍රණයන්ට අනිවාර්යයෙන්ම අදාළ නොවේ. එනම්, ඉතිහාස යාන්ත්‍රණයකට කල් ඉකුත් වූවත් පෙර නිරූපණයක් පෙන්විය හැකිය.

පැරණි එච්ටීටීපී පිරිවිතරයේ වචන වඩාත් ශක්තිමත් වූ අතර, පිටුපස බොත්තම් ඉතිහාසය සඳහා හැඹිලි නියෝග නොසලකා හරින ලෙස බ්‍රව්සර් වෙත පැහැදිලිවම කියනු ලැබේ.

ආපසු (පරිශීලක විට වරින් වර නැවත යන්න කිරීමට නියමිත ව තිබේ ලදී ලොගින් වී). එය කලින් විවෘත කළ URL වෙත ඉදිරියට නොයනු ඇත.

කෙසේ වෙතත්, ප්රායෝගිකව, හැඹිලිය පිටුපස බොත්තමට බලපෑම් කළ හැකිය, ඉතා නිශ්චිත තත්වයන් තුළ:

  • පිටුව HTTPS හරහා ලබා දිය යුතුය , එසේ නොමැතිනම් මෙම හැඹිලි කඩාවැටීම විශ්වාසදායක නොවේ. ප්ලස්, ඔබ HTTPS භාවිතා නොකරන්නේ නම්, ඔබේ පිටුව වෙනත් ආකාරයකින් සොරකම් කිරීමට අවදානමට ලක් වේ.
  • ඔබ යැවිය යුතුය Cache-Control: no-store, must-revalidate(සමහර බ්‍රව්සර් නිරීක්ෂණය කරන no-storeඅතර සමහර ඒවා නිරීක්ෂණය කරයි must-revalidate)

ඔබට කිසි විටෙකත් අවශ්‍ය නොවේ:

  • <meta>හැඹිලි ශීර්ෂ සමඟ - එය කිසිසේත් ක්‍රියා නොකරයි. සම්පූර්ණයෙන්ම නිෂ් .ලයි.
  • post-check/ pre-check- එය පමණක් අදාළ වන බව IE පමණක් උපදෙස් තියෙන්නේ cachable සම්පත්.
  • එකම ශීර්ෂකය දෙවරක් හෝ කොටස් දුසිමකින් යැවීම. එහි ඇති සමහර PHP ස්නිපෙට් ඇත්ත වශයෙන්ම පෙර ශීර්ෂයන් ප්‍රතිස්ථාපනය කරයි, එහි ප්‍රති ing ලය වන්නේ අවසාන එක යවනු ලැබේ.

ඔබට අවශ්‍ය නම්, ඔබට එකතු කළ හැකිය:

  • no-cacheහෝ max-age=0, එමඟින් සම්පත් (URL) "පරණ" බවට පත් වන අතර නව අනුවාදයක් තිබේ නම් බ්‍රව්සරයට සේවාදායකයා සමඟ පරීක්ෂා කිරීමට අවශ්‍ය වේ ( no-storeදැනටමත් මෙය වඩාත් ශක්තිමත් බව අඟවයි).
  • ExpiresHTTP / 1.0 සේවාදායකයින් සඳහා අතීතයේ දිනයක් සමඟ ( සැබෑ HTTP / 1.0 පමණක් සේවාදායකයින් මේ දිනවල සම්පූර්ණයෙන්ම නොපවතී).

පාරිතෝෂිකය: නව HTTP හැඹිලි RFC .


1
පැටවීමේ වේලාව අනුව වෙබ් අඩවියේ ක්‍රියාකාරිත්වයට මෙය කිසියම් අතුරු ආබාධයක් ඇති කරයිද? ගබඩාවක්, හැඹිලියක්, නැවත වලංගු කිරීමක් කාර්ය සාධනය කෙරෙහි බලපාන්නේ කෙසේද?
රාමන් ගයි

Am රාමන්ගයි හැඹිලිය අක්‍රීය කිරීම සාමාන්‍යයෙන් කාර්ය සාධනයට හානියක් කරයි (සහ ඔබ සඳහන් කළ විකල්ප 3 ම හැඹිලි අක්‍රීය කරන්න). එය සීඩීඑන් සහ අයිඑස්පී ප්‍රොක්සි (උදා: ජංගම දුරකථන ක්‍රියාකරුවන් විසින් බහුලව භාවිතා කරනු ලැබේ) අකාර්යක්ෂම කරයි. එය නව පරිශීලකයෙකු විසින් පළමු පැටවීමට හානියක් නොකරයි (ප්‍රොක්සි ගැටළුව පසෙක තබා), නමුත් පසුව සංචලනය බොහෝ මන්දගාමී විය හැකිය.
කෝර්නෙල්

අප යැවිය යුතු බව ඔබ ප්‍රකාශ කරයි Cache-Control: must-revalidate. දැනටමත් ඇඟවුම් කර ඇති Cache-Control: no-cacheබැවින් යැවිය නොහැක්කේ ඇයි ? w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1no-cachemust-revalidate
පැසීරියර්

3
අතර සම්බන්ධය @Pacerier no-cacheසමග must-revalidateහැඹිලි සඳහා සත්ය වන්නේ, නමුත් ආපසු ඉතිහාසය තොගයක් නොවේ. ඉතිහාසයේ හැසිරීම පාලනය කිරීම සඳහා බ්‍රවුසර් විශේෂ අවස්ථාmust-revalidate .
කෝර්නෙල්

orn පෝර්නල්, හ්ම්, අපේක්ෂිත හැසිරීම බව පවසන සහය දක්වන RFC එකක් තිබේද?
පැසීරියර්

105

Orn කෝර්නෙල් ප්‍රකාශ කළ පරිදි, ඔබට අවශ්‍ය වන්නේ හැඹිලිය අක්‍රිය කිරීම නොව, ඉතිහාස බෆරය අක්‍රිය කිරීමයි. ඉතිහාස බෆරය අක්‍රිය කිරීමට විවිධ බ්‍රව්සර් වලට ඔවුන්ගේම සියුම් ක්‍රම තිබේ.

Chrome හි (v28.0.1500.95 m) අපට මෙය කළ හැක්කේ පමණි Cache-Control: no-store.

ෆයර්ෆොක්ස් හි (v23.0.1) මේවායින් එකක් ක්‍රියාත්මක වනු ඇත:

  1. Cache-Control: no-store

  2. Cache-Control: no-cache (https පමණි)

  3. Pragma: no-cache (https පමණි)

  4. Vary: * (https පමණි)

ඔපෙරා හි (v12.15) අපට මෙය කළ Cache-Control: must-revalidateහැක්කේ (https පමණි).

සෆාරි හි (v5.1.7, 7534.57.2) මේවායින් එකක් ක්‍රියාත්මක වනු ඇත:

  1. Cache-Control: no-store
    <body onunload=""> html වලින්

  2. Cache-Control: no-store (https පමණි)

IE8 (v8.0.6001.18702IC) හි මේවායින් එකක් ක්‍රියාත්මක වනු ඇත:

  1. Cache-Control: must-revalidate, max-age=0

  2. Cache-Control: no-cache

  3. Cache-Control: no-store

  4. Cache-Control: must-revalidate
    Expires: 0

  5. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT

  6. Pragma: no-cache (https පමණි)

  7. Vary: * (https පමණි)

ඉහත සඳහන් දෑ ඒකාබද්ධ කිරීමෙන් ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7 සහ ඔපෙරා 12.15 සඳහා ක්‍රියා කරන මෙම විසඳුම අපට ලබා දෙයි: Cache-Control: no-store, must-revalidate (https පමණි)

ඔපෙරා සරල http පිටු සඳහා ඉතිහාස බෆරය අක්‍රිය නොකරන බැවින් https අවශ්‍ය බව සලකන්න. ඔබට සැබවින්ම https ලබා ගත නොහැකි නම් සහ ඔපෙරා නොසලකා හැරීමට ඔබ සූදානම් නම්, ඔබට කළ හැකි හොඳම දේ මෙයයි:

Cache-Control: no-store
<body onunload="">

මගේ පරීක්ෂණවල අමු ල logs ු-සටහන් පහත දැක්වේ:

HTTP:

  1. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7

  2. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7

  3. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    අසමත් වීම: සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8

  4. Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    අසමත් වීම: සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8

  5. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  6. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  7. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  8. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  9. Cache-Control: no-store
    අසමත් වීම: සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8

  10. Cache-Control: no-store
    <body onunload="">
    අසමත් වීම: ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7

  11. Cache-Control: no-cache
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  12. Vary: *
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: කිසිවක් නැත

  13. Pragma: no-cache
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: කිසිවක් නැත

  14. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  15. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  16. Cache-Control: must-revalidate, max-age=0
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  17. Cache-Control: must-revalidate
    Expires: 0
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  18. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: අයිඊ 8

  19. Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: කිසිවක් නැත

HTTPS:

  1. Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: කිසිවක් නැත

  2. Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: කිසිවක් නැත

  3. Vary: *
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8

  4. Pragma: no-cache
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8

  5. Cache-Control: no-cache
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8

  6. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8

  7. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8

  8. Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8

  9. Cache-Control: must-revalidate
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7
    සාර්ථකත්වය: ඔපෙරා 12.15

  10. Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7
    සාර්ථකත්වය: ඔපෙරා 12.15

  11. Cache-Control: must-revalidate, max-age=0
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7
    සාර්ථකත්වය: අයිඊ 8, ඔපෙරා 12.15

  12. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8, ඔපෙරා 12.15

  13. Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8, ඔපෙරා 12.15

  14. Cache-Control: no-store
    අසමත් වීම: ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7

  15. Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7

  16. Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    <body onunload="">
    අසමත් වීම: ඔපෙරා 12.15
    සාර්ථකත්වය: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7

  17. Cache-Control: private, no-cache
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7, ඔපෙරා 12.15
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8

  18. Cache-Control: must-revalidate
    Expires: 0
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7,
    සාර්ථකත්වය: අයිඊ 8, ඔපෙරා 12.15

  19. Cache-Control: must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7,
    සාර්ථකත්වය: අයිඊ 8, ඔපෙරා 12.15

  20. Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: 0
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7,
    සාර්ථකත්වය: අයිඊ 8, ඔපෙරා 12.15

  21. Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    <body onunload="">
    අසමත් වීම: ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, සෆාරි 5.1.7,
    සාර්ථකත්වය: අයිඊ 8, ඔපෙරා 12.15

  22. Cache-Control: private, must-revalidate
    Expires: Sat, 12 Oct 1991 05:00:00 GMT
    Pragma: no-cache
    Vary: *
    අසමත් වීම: ක්‍රෝම් 28, සෆාරි 5.1.7
    සාර්ථකත්වය: ෆයර්ෆොක්ස් 23, අයිඊ 8, ඔපෙරා 12.15

  23. Cache-Control: no-store, must-revalidate
    අසමත් වීම: කිසිවක්
    සාර්ථක නැත : ක්‍රෝම් 28, ෆයර්ෆොක්ස් 23, අයිඊ 8, සෆාරි 5.1.7, ඔපෙරා 12.15


3
මෙය මීට වසර කිහිපයකට පෙර පළ කළ බව මම දනිමි. මෙම ගැටළුව දැන් මාස කිහිපයක් තිස්සේ මට පිස්සු වැටී ඇත, ශරීරය හැඹිලි පාලනය සමඟ කටයුතු කරන්නේ කෙසේදැයි දන්නා බව පෙනේ. කිහිප දෙනෙකු භාවිතා කරන ආකාරය මම දැක ඇත්තෙමි, <body onunload="">නමුත් එය ඇත්ත ගැටළුව වටා ඇති මාර්ගයක් සේ පෙනේ. මම .htaccess භාවිතා කර ශීර්ෂයන් ඒ ආකාරයෙන් වෙනස් කිරීමට උත්සාහ කර ඇත්තෙමි, මම HTTPS භාවිතා කරන්නේ නම් එය එසේ ක්‍රියා කළ යුතුද? ගැටලුව වැඩිපුරම පැන නගින්නේ ප්‍රධාන වශයෙන් සෆාරි ය.
ජෝර්දාන්

4
Ord ජෝර්දාන්, ඉහත ල logs ු-සටහන් අනුව ඔබට HTTPS තිබේ නම් එකතු Cache-Control: no-storeකිරීම උපක්‍රමය කරයි. <body onunload="">අවශ්‍ය වන්නේ ඔබට HTTPS නොමැති විට පමණි.
පැසීරියර්

37

Web.config මාර්ගය ප්‍රයෝජනවත් බව මට පෙනී ගියේය (එය පිළිතුරට එක් කිරීමට උත්සාහ කළ නමුත් එය පිළිගත් බවක් නොපෙනේ, එබැවින් මෙහි පළ කිරීම)

<configuration>
<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
            <!-- HTTP 1.1. -->
            <add name="Pragma" value="no-cache" />
            <!-- HTTP 1.0. -->
            <add name="Expires" value="0" />
            <!-- Proxies. -->
        </customHeaders>
    </httpProtocol>
</system.webServer>

එක්ස්ප්‍රස් / node.js එකම ක්‍රමය මෙයයි:

app.use(function(req, res, next) {
    res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
    res.setHeader('Pragma', 'no-cache');
    res.setHeader('Expires', '0');
    next();
});

Web.config සඳහා මම අභිරුචි ශීර්ෂයන් යෙදීම සඳහා ටිකක් වෙනස් කරමි, ගතිකව පටවා ඇති / අවශ්‍යතා භාවිතා කරමින් අප දන්නා ස්ක්‍රිප්ට් සඳහා පමණි. ඔබගේ ස්ක්‍රිප්ට් ග්‍රාහක ෆෝල්ඩරයේ තිබේ යැයි උපකල්පනය කරන්න: <location path = "client"> ..... </location>
ඉබ්‍රාහිම් බෙන් සලාහ්

කුමක් සඳහාදැයි කල්පනා කළ හැක්කේ කාටද web.conf: එය ASP.NETවෙබ් යෙදුමක් සඳහා වන ප්‍රධාන සැකසුම් සහ වින්‍යාස ගොනුවයි . එය මූල නාමාවලියෙහි ඇති XML ලේඛනයකි. ( විකිය ).
තවත්

27

මෙම පිටුවේ ඇති සියලුම පිළිතුරු වලට තවමත් ගැටළු ඇති බව මට පෙනී ගියේය. විශේෂයෙන්, පිටුපස බොත්තම එබීමෙන් ඔබ එයට පිවිසෙන විට ඔවුන්ගෙන් කිසිවෙකු IE8 පිටුවෙහි හැඹිලි අනුවාදයක් භාවිතා කිරීම වළක්වන්නේ නැති බව මම දුටුවෙමි.

බොහෝ පර්යේෂණ සහ පරීක්ෂණ වලින් පසුව, මට සැබවින්ම අවශ්‍ය එකම ශීර්ෂ දෙක බව මම සොයා ගතිමි:

හැඹිලි පාලනය: ගබඩාවක් නොමැති වෙනස්
: *

විචල්‍ය ශීර්ෂය පිළිබඳ පැහැදිලි කිරීමක් සඳහා, http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6 බලන්න

IE6-8, FF1.5-3.5, Chrome 2-3, Safari 4, සහ Opera 9-10 හි, මෙම ශීර්ෂයන් ඔබ පිටුවට සබැඳියක් ක්ලික් කළ විට හෝ URL ය තැබූ විට සේවාදායකයාගෙන් පිටුව ඉල්ලීමට හේතු විය. ලිපින තීරුවේ කෙලින්ම. එය ජනවාරි 10 වන විට භාවිතයේ ඇති සියලුම බ්‍රව්සර් වලින් 99% ක් ආවරණය කරයි .

IE6 සහ ඔපෙරා 9-10 මත, පසුපස බොත්තම එබීමෙන් තවමත් හැඹිලි අනුවාදය පූරණය වීමට හේතු විය. මා විසින් පරීක්ෂා කරන ලද අනෙකුත් සියලුම බ්‍රව්සර් වලදී, ඔවුන් සේවාදායකයෙන් නැවුම් අනුවාදයක් ලබා ගත්හ. ඔබ පසුපස බොත්තම එබූ විට එම බ්‍රව්සර් පිටු වල හැඹිලි පිටු ආපසු නොයැවීමට හේතු වන කිසිදු ශීර්ෂ කට්ටලයක් මෙතෙක් මා සොයාගෙන නැත.

යාවත්කාලීන කිරීම: මෙම පිළිතුර ලිවීමෙන් පසුව, අපගේ වෙබ් සේවාදායකය HTTP 1.0 සේවාදායකයක් ලෙස හඳුනා ගන්නා බව මට වැටහුණි. HTTP 1.0 සේවාදායකයෙන් ලැබෙන ප්‍රතිචාර බ්‍රව්සර් විසින් හැඹිලි නොකිරීමට මා ලැයිස්තුගත කර ඇති ශීර්ෂයන් නිවැරදි ය. HTTP 1.1 සේවාදායකයක් සඳහා, BalusC හි පිළිතුර දෙස බලන්න .


4
මෙය IE8 හි පසුපස බොත්තම සඳහා ක්‍රියා කරයි !! අනෙක් සෑම යෝජනාවකම සෑම දෙයක්ම උත්සාහ කිරීමෙන් පසුව, "විචල්‍ය: *" ශීර්ෂය එකතු කිරීම, පරිශීලකයා පසුපස බොත්තම එබූ විට පිටුව නැවත පූරණය කිරීමට IE8 ට බල කළ හැකි එකම දෙයයි. මෙම කරන්නේ HTTP / 1.1 සේවාදායක මත වැඩ.
coredumperror

BarlusC විසින් යෝජනා කර ඇති ශීර්ෂ සමග ඒකාබද්ධ, අමතරව JS ඇමතුම් window.location.reload බව (snippet) විට, 'විශේෂණය (සෆාරි සඳහා අවශ්ය) "දිගින් දිගටම" සමග onPageShow අවස්ථාවට ප්රේරක සෑම මම සිට රිලෝඩ් සාර්ථකව බලකරනු පරීක්ෂා තියෙනවා බ්රවුසරය පරිශීලකයා පසුපස බොත්තම භාවිතා කරන විට සේවාදායකය.
coredumperror

1
OreCoreDumpError, ඔහ්, ඔබ JavaScript සක්‍රීය කර ඇතැයි නොසිතිය යුතුය.
පැසීරියර්

AcPacerier මම 2010 දී පිළිතුර ලියන අවස්ථාවේ දී, මෙය සෆාරි සහ ඔපෙරා යන දෙවර්ගයේම නවතම අනුවාදයන් මත ක්‍රියා කළ අතර අපගේ සේවාදායකයා HTTP 1.0 සේවාදායකයක් ලෙස හඳුනා ගත්තේය. අවාසනාවට, මෙය තවදුරටත් පහසුවෙන් පරීක්ෂා කිරීමට මට ක්‍රමයක් නැත, එබැවින් මෙම බ්‍රව්සර්වල නවතම අනුවාදයන් පිළිබඳව නිශ්චිත කිසිවක් මට පැවසිය නොහැක.
ක්‍රිස් වාසෙලි

ඔබ පරීක්ෂා කළ බ්‍රව්සර් අනුවාද මොනවාද?
පැසීරියර්

21

මඳක් පර්යේෂණ කිරීමෙන් පසු අපි බොහෝ බ්‍රව්සර් ආවරණය කරන බව පෙනෙන පහත ශීර්ෂ ලැයිස්තුවක් ඉදිරිපත් කළෙමු:

ASP.NET හි අපි පහත සඳහන් ස්නිපටය භාවිතයෙන් මේවා එකතු කළෙමු:

Response.ClearHeaders(); 
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0 
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.0 

සිට: http://forums.asp.net/t/1013531.aspx


36
art බාර්ට්: ඊටත් වඩා කරදරකාරී කාරණය නම් 1997 ජූලි 26 සෙනසුරාදා සඳුදා නොව සෙනසුරාදා දිනයයි ...
Cᴏʀʏ

5
Cache-Control: no-cacheසහ Cache-Control: privateගැටුම - ඔබ කිසි විටෙකත් දෙකම එකට එකතු නොවිය යුතුය: හිටපු තැනැත්තා බ්‍රව්සර් සහ ප්‍රොක්සි වලට කිසිසේත් හැඹිලි නොකරන ලෙස පවසන අතර, දෙවැන්න ප්‍රොක්සිවලට හැඹිලි නොකරන ලෙස පවසන නමුත් බ්‍රව්සර් වලට තමන්ගේ පෞද්ගලික පිටපතක් තබා ගැනීමට ඉඩ දෙයි. බ්‍රව්සරය කුමන සැකසුම අනුගමනය කරනු ඇත්දැයි මට විශ්වාස නැත, නමුත් බ්‍රව්සර් සහ අනුවාද අතර අනුකූල වීමට අපහසුය.
කීත්

පූර්ව චෙක්පත් සහ පශ්චාත් චෙක්පත් භාවිතා නොකරන්න. blogs.msdn.com/b/ieinternals/archive/2009/07/20/…
එරික්ලෝ

මෙය මට වැඩ කළේ නැත - asp.net 4.5 කේතය භාවිතා කරමින් කේතය ක්‍රියාත්මක වන නමුත් අවශ්‍ය ප්‍රති .ලය නොලැබේ. මට මෙය අනුගමනය කිරීමට සිදුවිය: stackoverflow.com/questions/22443932/…
ඇන්ඩි

8

ප්‍රතිචාරයේ ප්‍රාග්මා ශීර්ෂය භාවිතා කිරීම භාර්යාවන්ගේ කතාවකි. RFC2616 එය අර්ථ දක්වන්නේ ඉල්ලීම් ශීර්ෂයක් ලෙස පමණි

http://www.mnot.net/cache_docs/#PRAGMA


4
පිරිවිතරයෙන් ඔබ්බට යා යුත්තේ මන්ද යන්නට මෙය හොඳ උදාහරණයකි. පිරිවිතර සෑම විටම ඉතා පැහැදිලි නම්, ස්ටැක් ඕවර්ෆ්ලෝ වැනි වෙබ් අඩවි සඳහා වැඩි යමක් නොතිබෙනු ඇත. මයික්‍රොසොෆ්ට් වෙතින් HTTP 1.0 සේවාදායකයන් සමඟ පසුගාමී ගැළපුම සඳහා, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් විසින් HTTP ප්‍රග්මා හි විශේෂ භාවිතයක් සඳහා සහය දක්වයි: හැඹිලි ශීර්ෂකය. සේවාදායකයා ආරක්ෂිත සම්බන්ධතාවයක් හරහා සේවාදායකයා සමඟ සන්නිවේදනය කරන්නේ නම් (https: //) සේවාදායකයා ප්‍රාග්මා: හැඹිලි රහිත ශීර්ෂයක් ප්‍රතිචාරය සමඟ ලබා දෙන්නේ නම්, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් ප්‍රතිචාරය හැඹිලිගත නොකරයි.
මයිකල්

icmichaelok: ඔබේ යොමු කිරීම වලංගු වේ, නමුත් විශාල කරුණ මග හැරේ - නිසි හැඹිලි පාලනයක් සකසන්න / කල් ඉකුත් වන අතර ඔබට ප්‍රාග්මා අවශ්‍ය නොවේ.
එරික්ලෝ

8

වියාචනය: මම තරයේ යෝජනා කරන්නේ @ බැලස්සීගේ පිළිතුර කියවන්න. පහත දැක්වෙන හැඹිලි නිබන්ධනය කියවීමෙන් පසු: http://www.mnot.net/cache_docs/ (එය කියවීමට මම නිර්දේශ කරමි), එය නිවැරදි යැයි මම විශ්වාස කරමි. කෙසේ වෙතත්, historical තිහාසික හේතූන් මත (සහ මම එය මා විසින්ම පරීක්‍ෂා කර ඇති නිසා), මගේ මුල් පිළිතුර පහත ඇතුළත් කරමි:


මට වැඩ නොකළ PHP සඳහා 'පිළිගත්' පිළිතුර මම උත්සාහ කළෙමි. ඊට පස්සේ මම පොඩි පර්යේෂණයක් කළා, සුළු ප්‍රභේදයක් සොයා ගත්තා, එය පරීක්ෂා කළා, එය ක්‍රියාත්මක වුණා. මේ තියෙන්නේ:

header('Cache-Control: no-store, private, no-cache, must-revalidate');     // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);  // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                  // Date in the past  
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header ('Pragma: no-cache');

එය ක්‍රියාත්මක විය යුතුයි. ගැටළුව වූයේ ශීර්ෂකයේ එකම කොටස දෙවරක් සැකසීමේදී, falseදෙවන තර්කය ලෙස ශීර්ෂ ශ්‍රිතයට යවා නොමැති නම් , ශීර්ෂ ශ්‍රිතය පෙර header()ඇමතුම නැවත ලියයි . එබැවින්, සැකසීමේදී Cache-Control, උදාහරණයක් ලෙස යමෙකුට සියලු තර්ක එක් header()ශ්‍රිත ඇමතුමකට දැමීමට අවශ්‍ය නොවන්නේ නම් , ඔහු මෙවැනි දෙයක් කළ යුතුය:

header('Cache-Control: this');
header('Cache-Control: and, this', false);

වඩාත් සම්පූර්ණ ලියකියවිලි මෙතැනින් බලන්න .


14
මෙය මිථ්‍යාවන්ගෙන් පිරී ඇත. පූර්ව චෙක්පත සහ පශ්චාත් චෙක්පත් IE- පමණක් වන අතර එය හැඹිලි ප්‍රතිචාර සඳහා පමණක් අදාළ වන අතර 0 අගය කිසිදු විකල්පයක් නොවේ. max-stale යනු ප්‍රොක්සි ඉල්ලීම් ශීර්ෂකය මිස සේවාදායක ප්‍රතිචාර ශීර්ෂය නොවේ. කල් ඉකුත්වීම පිළිගන්නේ තනි අගයක් පමණි. එකකට වඩා වැඩි ගණනක් මෙම ශීර්ෂය නොසලකා හැරීමට හේතු වේ.
කෝර්නෙල්

1
ornporneL, ඔබ මෙම මිථ්‍යාවන් සමඟ නිවැරදිව කටයුතු කරන තරඟකාරී පිළිතුරක් ඉදිරිපත් කරනවාද?
Oddthinking

D එකතු කිරීම, stackoverflow.com/questions/49547/… තරඟකාරී පිළිතුරක් සේ පෙනේ.
මයික් ඔටුම්

Ac පැකේරියර් ඔව්, මම වියාචනයෙහි සඳහන් පරිදි, BalusC හි පිළිතුර භාවිතා කරන්න.
ස්ටීවන් ඔක්ස්ලි

8

ASP.NET Core සඳහා, සරල මිඩ්ල්වෙයාර් පන්තියක් සාදන්න:

public class NoCacheMiddleware
{
    private readonly RequestDelegate m_next;

    public NoCacheMiddleware( RequestDelegate next )
    {
        m_next = next;
    }

    public async Task Invoke( HttpContext httpContext )
    {
        httpContext.Response.OnStarting( ( state ) =>
        {
            // ref: http://stackoverflow.com/questions/49547/making-sure-a-web-page-is-not-cached-across-all-browsers
            httpContext.Response.Headers.Append( "Cache-Control", "no-cache, no-store, must-revalidate" );
            httpContext.Response.Headers.Append( "Pragma", "no-cache" );
            httpContext.Response.Headers.Append( "Expires", "0" );
            return Task.FromResult( 0 );
        }, null );

        await m_next.Invoke( httpContext );
    }
}

ඉන්පසු එය ලියාපදිංචි කරන්න Startup.cs

app.UseMiddleware<NoCacheMiddleware>();

ඔබ මෙය පසුව කොතැනක හෝ එක් කිරීමට වග බලා ගන්න

app.UseStaticFiles();

මයික්‍රොසොෆ්ට්.නෙට්.
වික්ටර් ෂරෝවාටොව්

7

මෙම නියෝගයන් කිසිදු ආරක්ෂක අවදානමක් අවම නොකරයි. ඒවා සැබවින්ම අදහස් කරන්නේ යූඒඒ හි අස්ථාවර තොරතුරු නැවුම් කිරීමට බල කිරීම මිස යූඒඒ තොරතුරු රඳවා තබා ගැනීමෙන් වළක්වා ගැනීම නොවේ. මේ හා සමාන ප්‍රශ්නය බලන්න . අවම වශයෙන්, ඕනෑම රවුටර, ප්‍රොක්සි යනාදිය හැඹිලි නියෝග නොසලකා හරින බවට කිසිදු සහතිකයක් නොමැත.

වඩාත් ධනාත්මක සටහනක, පරිගණක සඳහා භෞතික ප්‍රවේශය, මෘදුකාංග ස්ථාපනය කිරීම වැනි ප්‍රතිපත්ති ඔබට ආරක්ෂාව සම්බන්ධයෙන් බොහෝ සමාගම්වලට වඩා සැතපුම් ගණනක් ඉදිරියෙන් සිටියි. මෙම තොරතුරු පරිභෝජනය කරන්නන් මහජනතාවගේ සාමාජිකයන් නම්, ඔබට සැබවින්ම කළ හැකි එකම දෙය වන්නේ තොරතුරු ඔවුන්ගේ යන්ත්‍රයට පහර දුන් පසු එම යන්ත්‍රය ඔවුන්ගේ වගකීම මිස ඔබේ නොවන බව තේරුම් ගැනීමට ඔවුන්ට උපකාර කිරීමයි .


7

IE6 හි දෝෂයක් තිබේ

ඔබ "Cache-Control: no-cache" භාවිතා කළත් "Content-Encoding: gzip" සමඟ අන්තර්ගතය සැමවිටම හැඹිලිගත වේ.

http://support.microsoft.com/kb/321722

IE6 භාවිතා කරන්නන් සඳහා ඔබට gzip සම්පීඩනය අක්‍රිය කළ හැකිය ("MSIE 6" සඳහා පරිශීලක නියෝජිතයා පරීක්ෂා කරන්න)


6

HTTP 1.1 සඳහා වන RFC පවසන්නේ නිසි ක්‍රමවේදය සඳහා HTTP ශීර්ෂයක් එක් කිරීම:

හැඹිලි පාලනය: හැඹිලිය නැත

පැරණි බ්‍රව්සර් HTTP 1.1 ට නිසි ලෙස අනුකූල නොවන්නේ නම් මෙය නොසලකා හැරිය හැක. ඔබට ශීර්ෂකය උත්සාහ කළ හැකි අය සඳහා:

ප්‍රග්මා: හැඹිලියක් නැත

මෙය HTTP 1.1 බ්‍රව්සර් සඳහාද ක්‍රියා කිරීමට නියමිතය.


1
පිරිවිතරයෙන් පෙන්නුම් කරන්නේ ප්‍රතිචාරය නැවත වලංගු කිරීමකින් තොරව නැවත භාවිතා නොකළ යුතු බවයි. එය Cache-Control: no-store යනු ප්‍රතිචාරය මුලින් හැඹිලියක පවා ගබඩා නොවන බව දැක්වීමට නිල ක්‍රමයයි.
ඇන්තනි ඩබ්ලිව් ජෝන්ස්

6

නවීකරණය කරන ලද http ශීර්ෂය 1995 දී යම් දිනයකට සැකසීම සාමාන්‍යයෙන් උපක්‍රමය කරයි.

මෙන්න උදාහරණයක්:

කල් ඉකුත් වේ: බදාදා, 15 නොවැම්බර් 1995 04:58:08 GMT
අවසන් වරට වෙනස් කරන ලද්දේ: බදාදා, 15 නොවැම්බර් 1995 04:58:08 GMT
හැඹිලි පාලනය: හැඹිලියක් නැත, නැවත වලංගු කළ යුතුය

1
බොහෝ කලකට පෙර අවසන්-වෙනස් කරන ලද සැකසීම් හැඹිලි මත කිසිදු බලපෑමක් ඇති නොකරයි.
එරික්ලෝ

6

මෙම ශීර්ෂ උත්සවය සඳහා, PHP ප්රලේඛනය (තෙවන පාර්ශවයක් විසින් දායක) ඒ වෙනුවට සම්පූර්ණ උදාහරණයක් ඇත:

    header('Pragma: public');
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");                  // Date in the past   
    header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');     // HTTP/1.1
    header('Cache-Control: pre-check=0, post-check=0, max-age=0', false);    // HTTP/1.1
    header ("Pragma: no-cache");
    header("Expires: 0", false);

11
මෙය පැහැදිලිවම වැරදිය. කල් ඉකුත්වීම, හැඹිලි පාලනය සහ ප්‍රග්මා සඳහා ශීර්ෂයට () දෙවන ඇමතුම් කලින් සකසා ඇති අගයන් සම්පූර්ණයෙන්ම නැවත ලියයි.
කෝර්නෙල්

1
ornporneL: නැත, කලින් සැකසූ අගයන් 2 වන පරාමිතියක් ලෙස අසත්‍ය ලෙස සම්මත කරන විට පෙර ලියූ අගයන් ඉක්මවා නොයන්න.
ජූලියන් පලාර්ඩ්

1
අදහස් දැක්වීමෙන් පසුව ජූලියන්පාලඩ් පිළිතුර සංස්කරණය කර ඇත. එය තවමත් එතරම් තේරුමක් නැත.
කෝර්නෙල්

ඔබට 9 ට පෙර IE හි වැඩ කිරීමට අවශ්‍ය නම් බහු හැඹිලි පාලන ශීර්ෂයන් එවන්න එපා. පෙර චෙක්පත් හෝ පසු චෙක්පත් එවන්න එපා. blogs.msdn.com/b/ieinternals/archive/2009/07/20/…
එරික්ලෝ

6

ඔබ එස්එස්එල් සහ හැඹිලි හරහා අයිඊ 6-අයිඊ 8 සමඟ බාගත කිරීමේ ගැටලුවලට මුහුණ දෙන්නේ නම්: එම්එස් ඔෆිස් ලිපිගොනු සමඟ හැඹිලි ශීර්ෂකය (හා සමාන අගයන්) ඔබට හැඹිලිය භාවිතා කළ හැකිය: පුද්ගලික, ගබඩා නැති ශීර්ෂකය සහ පෝස්ට් ඉල්ලීම මත ආපසු ගොනුව. එය වැඩ කරනවා.


6

මගේ නඩුවේදී මම මේ සමඟ ක්‍රෝම් හි ගැටලුව විසඳා ගනිමි

<form id="form1" runat="server" autocomplete="off">

ආරක්ෂක හේතූන් මත පරිශීලකයින් ආපසු බොත්තම ක්ලික් කළ විට මට පෙර පෝරම දත්තවල අන්තර්ගතය ඉවත් කිරීමට අවශ්‍ය වේ


මගේ මොසිල්ලා 19.x බ්‍රව්සර් ගැටළුව ද කේත ස්නිපෙට් මගින් විසඳා ඇත. autocomplete = "අක්‍රිය". ඔබට ස්තුතියි.
සත්‍ය

5

පිළිගත් පිළිතුර IIS7 + සඳහා වැඩ කරන බවක් නොපෙනේ, II7 හි හැඹිලි ශීර්ෂයන් නොයැවීම පිළිබඳ ප්‍රශ්න විශාල සංඛ්‍යාවක් ඇත:

සහ යනාදි

පිළිගත් පිළිතුර නිවැරදි වන්නේ කුමන ශීර්ෂයන් සැකසිය යුතුද, නමුත් ඒවා සැකසිය යුතු ආකාරය අනුව නොවේ. මේ ආකාරයෙන් IIS7 සමඟ ක්‍රියා කරයි:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "-1");

පළමු පේළිය සකසා Cache-controlඇති no-cacheඅතර දෙවන පේළිය අනෙක් ගුණාංග එකතු කරයිno-store, must-revalidate


මෙය මට වැඩ කරයි:Response.Cache.SetAllowResponseInBrowserHistory(false); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetNoStore(); Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
විල්ක්ස්-

4

ප්‍රග්මා: නො-හැඹිලිය සැකසීමෙන් මම සියලු බ්‍රව්සර් හරහා හොඳම සහ වඩාත්ම ස්ථාවර ප්‍රති results ල ලබා ඇත්තෙමි


4

BalusC විසින් සපයන ලද පිළිතුරේ ශීර්ෂයන් බ්‍රව්සරයේ පිටුපස බොත්තම භාවිතා කරන විට සෆාරි 5 (සහ සමහර විට පැරණි අනුවාදයන්) බ්‍රව්සර් හැඹිලියෙන් අන්තර්ගතය ප්‍රදර්ශනය කිරීමෙන් වළක්වන්නේ නැත. මෙය වලක්වා ගත හැකි ක්‍රමයක් නම් බොඩි ටැගයට හිස් ඔන්ලෝඩ් ඉසව් හෑන්ඩ්ලර් ලක්‍ෂණයක් එක් කිරීමයි:

<body onunload=""> 

මෙම හැක් මඟින් සෆාරි හි පසුපසට හැඹිලිය කැඩී යයි: පසුපස බොත්තම ක්ලික් කිරීමේදී හරස් බ්‍රව්සරයේ පැටවීමේ සිදුවීමක් තිබේද?


සිසිල්, මම එය අත්හදා බැලූ අතර මෙය සැබවින්ම ක්‍රියාත්මක වන්නේ සෆාරි (5.1.7) මත වන නමුත් ඔපෙරා නොවේ.
පැසීරියර්

4

එසේම, හොඳ මිනුමක් සඳහා, හැඹිලිය සක්‍රීය කිරීම සඳහා ඔබ එය භාවිතා කරන්නේ නම්, ExpiresDefaultඔබේ .htaccessගොනුවේ නැවත සැකසීමට වග බලා ගන්න .

ExpiresDefault "access plus 0 seconds"

පසුව, ඔබට ExpiresByTypeහැඹිලි කිරීමට අවශ්‍ය ගොනු සඳහා නිශ්චිත අගයන් සැකසීමට භාවිතා කළ හැකිය :

ExpiresByType image/x-icon "access plus 3 month"

ඔබගේ ගතික ලිපිගොනු උදා: php යනාදිය බ්‍රව්සරය විසින් හැඹිලිගත කරන්නේ නම් මෙයද ප්‍රයෝජනවත් විය හැකිය. පරීක්ෂා කරන්න ExpiresDefault.


3

ශීර්ෂයන්ට අමතරව https හරහා ඔබේ පිටුවට සේවය කිරීම ගැන සලකා බලන්න . බොහෝ බ්‍රව්සර් පෙරනිමියෙන් https හැඹිලිගත නොකරයි.


3
//In .net MVC
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult FareListInfo(long id)
{
}

// In .net webform
<%@ OutputCache NoStore="true" Duration="0" VaryByParam="*" %>

2

BalusC -> ANSWER සම්පූර්ණ කිරීම සඳහා ඔබ perl භාවිතා කරන්නේ නම් ඔබට HTTP ශීර්ෂ එකතු කිරීමට CGI භාවිතා කළ හැකිය.

පර්ල් භාවිතා කිරීම:

Use CGI;    
sub set_new_query() {
        binmode STDOUT, ":utf8";
        die if defined $query;
        $query = CGI->new();
        print $query->header(
                        -expires       => 'Sat, 26 Jul 1997 05:00:00 GMT',
                        -Pragma        => 'no-cache',
                        -Cache_Control => join(', ', qw(
                                            private
                                            no-cache
                                            no-store
                                            must-revalidate
                                            max-age=0
                                            pre-check=0
                                            post-check=0 
                                           ))
        );
    }

Apache httpd.conf භාවිතා කිරීම

<FilesMatch "\.(html|htm|js|css|pl)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>

සටහන: මම html META භාවිතා කිරීමට උත්සාහ කළ විට, බ්‍රව්සර් ඒවා නොසලකා හැර පිටුව හැඹිලිගත කළේය.


0

මට පෙන්වා දීමට අවශ්‍ය වන්නේ යමෙකුට පමණක් ගතික අන්තර්ගතයන් හැඹිලි කිරීම වැළැක්වීමට අවශ්‍ය නම්, එම අතිරේක ශීර්ෂයන් එකතු කිරීම ක්‍රමලේඛගත කළ යුතු බවයි.

හැඹිලි රහිත ශීර්ෂයන් එකතු කිරීම සඳහා මම මගේ ව්‍යාපෘතියේ වින්‍යාස ගොනුව සංස්කරණය කළෙමි, නමුත් එය සාමාන්‍යයෙන් යෝග්‍ය නොවන හැඹිලි ස්ථිතික අන්තර්ගතයන් අක්‍රීය කර ඇත. කේතයේ ප්‍රතිචාර ශීර්ෂයන් වෙනස් කිරීම මඟින් රූප සහ විලාසිතාවේ ගොනු හැඹිලි බවට සහතික වේ.

මෙය තරමක් පැහැදිලිය, නමුත් තවමත් සඳහන් කිරීම වටී.

තවත් අවවාදයක්. HttpResponse පන්තියේ ClearHeaders ක්‍රමය භාවිතා කිරීමට ප්‍රවේශම් වන්න. ඔබ එය නොසැලකිලිමත් ලෙස භාවිතා කරන්නේ නම් එය ඔබට යම් තැළීමක් ඇති කරයි. ඒක මට දුන්නා වගේ.

ActionFilterAttribute සිද්ධිය වෙත හරවා යැවීමෙන් පසු, සියලු ශීර්ෂයන් ඉවත් කිරීමේ ප්‍රතිවිපාක, TempData ගබඩාවේ ඇති සියලුම සැසි දත්ත සහ දත්ත නැති වී යයි. ක්‍රියාවකින් යළි හරවා යැවීම ආරක්ෂිත හෝ නැවත හරවා යැවීමේදී ශීර්ෂ ඉවත් නොකරන්න.

දෙවන සිතුවිල්ල මත මම ක්ලියර්හෙඩර්ස් ක්‍රමය භාවිතා කිරීම අධෛර්යමත් කරමි. ශීර්ෂ වෙන වෙනම ඉවත් කිරීම වඩා හොඳය. හැඹිලි පාලක ශීර්ෂය නිසියාකාරව සැකසීමට මම මෙම කේතය භාවිතා කරමි:

filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.AppendCacheExtension("no-store, must-revalidate");

0

<head><meta>මූලද්රව්ය සමඟ මට වාසනාවක් නොතිබුණි . HTTP හැඹිලි ආශ්‍රිත පරාමිතීන් කෙලින්ම එකතු කිරීම (HTML ලේඛනයට පිටතින්) ඇත්තෙන්ම මට වැඩ කරයි.

Web.py web.headerඇමතුම් භාවිතා කරමින් පයිතන්හි නියැදි කේතය පහත දැක්වේ. මම මගේ පුද්ගලික අදාළ නොවන උපයෝගිතා කේතය හිතාමතාම නැවත සකස් කළෙමි.

    වෙබ් ආයාත කරන්න
    sys ආනයනය කරන්න
    පුද්ගලික උපයෝගිතා ආයාත කරන්න

    myname = "main.py"

    urls = (
        '/', 'main_class'
    )

    main = web.application (url, globals ())

    render = web.template.render ("සැකිලි /", පදනම = "පිරිසැලසුම", හැඹිලිය = අසත්‍යය)

    පන්තියේ main_class (වස්තුව):
        def GET (ස්වයං):
            web.header ("හැඹිලි පාලනය", "හැඹිලියක් නැත, ගබඩාවක් නැත, නැවත වලංගු කළ යුතුය")
            web.header ("ප්‍රග්මා", "නෝ-කෑෂ්")
            web.header ("කල් ඉකුත් වේ", "0")
            ආපසු render.main_form ()

        def POST (ස්වයං):
            msg = "POSTed:"
            form = web.input (ශ්‍රිතය = කිසිවක් නැත)
            web.header ("හැඹිලි පාලනය", "හැඹිලියක් නැත, ගබඩාවක් නැත, නැවත වලංගු කළ යුතුය")
            web.header ("ප්‍රග්මා", "නෝ-කෑෂ්")
            web.header ("කල් ඉකුත් වේ", "0")
            ආපසු render.index_laid_out (සුබ පැතුම් = msg + form.function)

    __name__ == "__main__" නම්:
        nargs = len (sys.argv)
        # පයිතන් වැඩසටහන් නාමයෙන් පසුව ප්‍රමාණවත් තර්ක ඇති බවට සහතික වන්න
        nargs නම්! = 2:
            LOG-AND-DIE ("% s: විධාන රේඛා දෝෂය, nargs =% s, 2 විය යුතුය", myname, nargs)
        # TCP වරාය අංකය සංඛ්‍යාත්මක බවට වග බලා ගන්න
        උත්සාහ කරන්න:
            tcp_port = int (sys.argv [1])
        ව්‍යතිරේකය හැර ඊ:
            LOG-AND-DIE ("% s: tcp_port = int (% s) අසමත් විය (පූර්ණ සංඛ්‍යාවක් නොවේ)", myname, sys.argv [1])
        # සියල්ල හොඳින්!
        JUST-LOG ("% s: වරාය% d මත ධාවනය වේ", myname, tcp_port)
        web.httpserver.runsimple (main.wsgifunc (), ("localhost", tcp_port))
        main.run ()


වසර ගණනාවක් තිස්සේ වෙබ් අඩවියේ ඇති පිළිතුරු වල මෙය දැනටමත් බොහෝ වාරයක් ආවරණය වී නැද්ද?
මාටින් ටුවර්නොයි

මෙටා විධානයන් ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සහ එජ් 18 සහ ඊට පෙර සංස්කරණ වල ක්‍රියාත්මක වේ. නවීන බ්‍රව්සර් ඒවාට සහය නොදක්වයි. crbug.com/2763
එරික්ලෝ

0

හැඹිලි පිළිබඳ සිද්ධි අධ්‍යයනයකට මෙම සබැඳිය බලන්න:

http://securityevaluators.com/knowledge/case_studies/caching/

සාරාංශය, ලිපියට අනුව, Cache-Control: no-storeක්‍රෝම්, ෆයර්ෆොක්ස් සහ අයිඊ මත පමණක් ක්‍රියා කරයි. IE වෙනත් පාලනයන් පිළිගනී, නමුත් ක්‍රෝම් සහ ෆයර්ෆොක්ස් පිළිගන්නේ නැත. සංකල්පය හැඹිලිගත කිරීමේ හා ලේඛනගත කිරීමේ ඉතිහාසය සමඟ සබැඳිය හොඳ කියවීමකි.


0

මම මේ ආකාරයෙන් විසඳා ඇත්තෙමි.

සලකා බැලිය යුතු කරුණු 2:

1) ජාවාස්ක්‍රිප්ට් වෙනුවට සේවාදායකයේ සිදුවීම් පසුපස ක්ලික් කිරීමකින් ඉවත් නොකෙරේ.

2) කුකීස් කියවීමට / ලිවීමට මට ජාවාස්ක්‍රිප්ට් 2 ක් ඇත

function setCookie(name, value, days)
{
    var expires = "";
    if (days)
    {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "") + expires + "; path=/";
}

function getCookie(name)
{
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');

    for (var i = ca.length - 1; i >= 0; i--)
    {
        var c = ca[i];
        while (c.charAt(0) == ' ')
        {
            c = c.substring(1, c.length);
        }

        if (c.indexOf(nameEQ) == 0)
        {
            return c.substring(nameEQ.length, c.length);
        }
    }
    return null;
}

මගේ Page_Load හි මම මෙය ඇතුළත් කළෙමි: (මෙය පසුපස ක්ලික් කිරීමකින් ඉවත් නොකෙරේ)

    protected void Page_Load(object sender, EventArgs e)
    {
       Page.RegisterClientScriptBlock("", "<script>setCookie('" + Session.SessionID + "', '" + Login + "', '100');</script>");
    }

'පිවිසීම' යනු මගේ හැඳුනුම් අගය වන අතර එය පිටවීමෙන් පසු -1 වේ (ඔබට වෙනත් දෙයක් භාවිතා කළ හැකිය, උදාහරණයක් ලෙස බූලියන්).

ඉන්පසු මගේ පිටුවේ මම මෙය එකතු කළෙමි: (මෙය පසුපස ක්ලික් කිරීම මත වෙඩි තබා ඇත)

<script type="text/javascript">
if (getCookie('<%= Session.SessionID %>') < 0)
        {
            if (history.length > 0)
            {
                history.go(+1);
            }
        }

</script>

වෙන කිසිවක් නැත.

මෙම විසඳුම සමඟ සෑම පිටුවකම පසු ක්ලික් කිරීම සක්‍රීය කර ඇති අතර එකම බ්‍රව්සරයේ සෑම පිටුවකම පිටවීමෙන් පසුව පමණක් අක්‍රීය කරන්න.


-1

සම්පූර්ණ යෙදුම වෙනුවට අයිඑස් තුළ හැඹිලි ලබා ගැනීම වෙනුවට තනි ගොනුවක් සැකසීම සඳහා ඔබට ස්ථාන වාරණය භාවිතා කළ හැකිය

 <location path="index.html">
    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Cache-Control" value="no-cache" />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
  </location>

-1

මගේ පිළිතුර සරල හා මෝඩකමක් දැයි නිශ්චිතවම කිව නොහැකි අතර, එය බොහෝ කලකට පෙර සිටම ඔබ දන්නා කරුණකි, නමුත් ඔබේ historical තිහාසික පිටු බැලීමට යමෙකු බ්‍රව්සරයේ පිටුපස බොත්තම භාවිතා කිරීමෙන් වලක්වා ගැනීම ඔබේ ඉලක්ක වලින් එකක් බැවින් ඔබට භාවිතා කළ හැකිය:

window.location.replace("https://www.example.com/page-not-to-be-viewed-in-browser-history-back-button.html");

ඇත්ත වශයෙන්ම, මෙය මුළු වෙබ් අඩවිය පුරාම ක්‍රියාත්මක කිරීමට නොහැකි විය හැකි නමුත් අවම වශයෙන් සමහර විවේචනාත්මක පිටු සඳහා ඔබට එය කළ හැකිය. මෙය උපකාරී වේ යැයි සිතමි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.