RedirectToAction Возврат 301 [дубликат]

Ниже приведен короткий гибкий фрагмент, который преобразует строку datetime в безопасном для кросс-браузера стиле, как nicel, подробно описанный @ drankin2112.

var inputTimestamp = "2014-04-29 13:00:15"; //example

var partsTimestamp = inputTimestamp.split(/[ \/:-]/g);
if(partsTimestamp.length < 6) {
    partsTimestamp = partsTimestamp.concat(['00', '00', '00'].slice(0, 6 - partsTimestamp.length));
}
//if your string-format is something like '7/02/2014'...
//use: var tstring = partsTimestamp.slice(0, 3).reverse().join('-');
var tstring = partsTimestamp.slice(0, 3).join('-');
tstring += 'T' + partsTimestamp.slice(3).join(':') + 'Z'; //configure as needed
var timestamp = Date.parse(tstring);

Ваш браузер должен предоставить тот же результат временной метки, что и Date.parse с:

(new Date(tstring)).getTime()
234
задан Liam 27 February 2013 в 14:56
поделиться

9 ответов

301 является кэшируемым ответом на HTTP RFC, и браузеры будут кэшировать его в зависимости от заголовков кеширования HTTP, которые у вас есть на ответ. Используйте FireBug или Charles, чтобы изучить заголовки ответов, чтобы узнать точную продолжительность ответа на кеширование.

Если вы хотите контролировать продолжительность кэширования, вы можете использовать заголовки ответа HTTP Cache-Control и Expires сделать то же самое. Кроме того, если вы вообще не хотите кэшировать ответ 301, используйте следующие заголовки.

Cache-Control: no-store, no-cache, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:00 GMT
19
ответ дан Alex J 18 August 2018 в 10:10
поделиться
  • 1
    Хотя технически правильно, ваш ответ не отвечает на вопрос пользователей и, следовательно, не отвечает на вопрос, к которому я пришел сюда. Когда текущие, не кешированные заголовки 301 уже в браузере истекают для основных браузеров? – rob 8 February 2013 в 11:53
  • 2
    Если кому-то все еще интересно, эта команда может переключить кеш на 301. – Francisco Presencia 16 July 2013 в 22:47
  • 3
    Ссылка для FF, и это не сработало для меня. Установленное расширение веб-разработчика 1.2.5 и использование FF 23.0.1 – an phu 12 September 2013 в 19:58
  • 4
    на вопрос не ответил. Вопрос состоял в том, как долго будет перенаправляться перенаправление, если не указана дата истечения срока действия – Dennis Flagg 7 May 2014 в 18:22

У меня есть простое решение, которое работало во всех основных браузерах (последняя версия), включая IE, Chrome и FF

  1. Ctrl + Shift + Del
  2. - Chrome: выберите «Просмотр истории» и «Кэш ...» IE: я оставляю параметр по умолчанию «Временные файлы Интернета и файлы сайта», «Файлы cookie и данные веб-сайта», «История» FF: «Просмотр и загрузка истории», «Кэш»
  3. Нажмите «Удалить»
  4. Закрыть и снова открыть браузер. Он должен работать
5
ответ дан EECOLOR 18 August 2018 в 10:10
поделиться
  • 1
    Вы также должны убедиться, что вы не находитесь на рассматриваемой странице, потому что некоторые браузеры не очищают кешированные элементы с открытых страниц. – Oliver Schimmer 29 June 2018 в 14:46

Попросите пользователя отправить форму сообщения на этом URL-адресе, и кешированная переадресация исчезла:)

<body onload="document.forms[0].submit()">
<form action="https://forum.pirati.cz/unreadposts.html" method="post">
    <input type="submit" value="fix" />
</form>
</body>
9
ответ дан Krtek Net 18 August 2018 в 10:10
поделиться
  • 1
    это так просто, но так эффективно ... где голоса ??? – Rico Neitzel 20 November 2017 в 23:44
  • 2
    Ух, скажите, что теперь? – Mike Causer 27 February 2018 в 00:31
  • 3
    Я согласен, что это лучший метод, который я нашел, чтобы отвинтить его. – esjay 13 April 2018 в 04:49

Ответ, который помогает тем, кто отчаянно хочет избавиться от кеша redirect:

Chrome кэширует 301 перенаправление бесконечно или пока вы не откроете DevTools, установите флажок Отключить кеш (пока DevTools открыт), и перезагрузите страницу.

Это работало для меня в Chrome 39, но, к сожалению, не для localhost.

13
ответ дан Olaf 18 August 2018 в 10:10
поделиться
  • 1
    Это работает, и даже после повторного включения кеширования перенаправление пропало. СПАСИБО! – migg 20 September 2016 в 07:07
  • 2
    Похоже, что это не работает для доменов, указанных в 127.0.0.1 через файл локальных хостов. Есть ли другой вариант для этого случая? – pwagner 16 December 2016 в 12:27
  • 3
    Не работает, если перенаправление непреднамеренно указывает на другой порт, например, от localhost:8000 до localhost (порт 80). Я также очистил все данные сайта / приложения как с localhost, так и с localhost: 8000, но это тоже не помогло. – Dennis98 29 November 2017 в 14:02

в качестве ответа @thomasrutter

Если вы ранее отправили 301 переадресацию, но хотите отменить это

Если у людей все еще есть переадресация 301 кеширования в браузере они будут по-прежнему попадать на целевую страницу, независимо от того, имеет ли исходная страница редирект на месте. Ваши варианты для исправления этого включают в себя:

Самое простое и лучшее решение - выпустить еще 301 перенаправление обратно.

Браузер поймет, что он направлен обратно на то, что он ранее считалось, что это выведенный из эксплуатации URL, и это должно привести к повторному извлечению этого URL-адреса, чтобы подтвердить, что старое перенаправление еще не существует.

Если у вас нет контроля над сайтом, где предыдущий перенаправлена ​​цель, тогда вам удача. Попробуйте попросить владельца сайта перенаправить обратно к вам.

На самом деле это означает:

  1. a.com 301 - b. com
  2. удалить 301.com
  3. сайта.com.com на сайт a.com

Затем он работает.

4
ответ дан phil han 18 August 2018 в 10:10
поделиться
  • 1
    Но тогда у вас все еще есть 301.com b.com: (- грязное исправление – B T 1 August 2016 в 02:24
  • 2
    Можете ли вы удалить перенаправление, выпустив еще 301 из страницы different ? например (a.com 301 - & gt; b.com) (удалить a.com 301) (добавить a.com/abcdefg 301 - & gt; a.com) и заставить клиента как-то просмотреть a.com/abcdefg? – nemec 5 August 2016 в 19:42
  • 3
    Спасибо, это работает! Протестировано на IE11, Firefox 52, Safari 10, Chrome 57 – Munhitsu 4 April 2017 в 16:13
  • 4
    У меня была ситуация, когда вы хотели использовать как a.com, так и b.com. Так что b.com 301 a.com не был вариантом. Нашим решением было перейти на HTTPS - у нас не было перенаправления на HTTPS – rosell.dk 1 May 2017 в 11:45

Для целей тестирования (так, без кэшированных переадресаций), люди могут открывать NEW PRIVATE WINDOW: нажмите CTRL+SHIFT+ N [или P]

3
ответ дан T.Todua 18 August 2018 в 10:10
поделиться
  • 1
    Это было уменьшено, вероятно, потому, что основное обещание «частного окна» это не WRITE для кэширования, но все равно может ПРОЧИТАТЬ / ПОЛУЧИТЬ их. НО для меня на Firefox 37.0.1 (Linux) это сработало и было очень быстрым и полезным. Частное окно отражает текущие / незашифрованные настройки веб-сервера, тогда как на обычных вкладках браузера используется кешированная переадресация 301. – alfonx 14 April 2015 в 21:29
  • 2
    alfonx: Частное окно не может повторно использовать кеш просто потому, что владелец сервера может использовать элементы в режиме cookie, показывая прежнюю идентификацию пользователя. Хотя я должен признать, что кэш повторное использование, вероятно, безопасно против порно-ненавидя жены. – Zdenek 18 May 2015 в 19:02
  • 3
    Это не работает, если у вас уже есть кешированный 301. Частный действительно использует перенаправление, которое кэшируется. – jeffmcneill 16 October 2016 в 06:11

Как минимум два браузера - Chrome и Firefox - будут кэшировать 301-редирект с без истечения срока годности .

То есть он будет кэшироваться до тех пор, пока кеш браузера может вместить его. Он будет удален из кеша, если вы вручную очистите кеш, или если записи кэша будут очищены, чтобы освободить место для новых.

Вы можете проверить это, по крайней мере, в Firefox, перейдя в about:cache и найти его в дисковый кеш.

Я не знаю о поведении других браузеров, таких как IE10 / IE11. Однако, учитывая, что другие браузеры кэшируют его на неопределенный срок, вам все равно придется приспособиться к этому.

Во всех браузерах, включая Chrome / Firefox, по-прежнему можно переопределить это поведение по умолчанию с использованием заголовков, как описано ниже:

Примечание: этот ответ был написан в 2014 году и поведение браузера может измениться с течением времени.

Если вы не хотите, чтобы перенаправление было кэшировано

Это неопределенное кеширование - это только по умолчанию кеширование этими браузерами при отсутствии заголовков Cache-Control. Логика заключается в том, что вы указываете «постоянную» перенаправление и не даете им никаких других инструкций кэширования, поэтому они будут обрабатывать ее так, как если бы вы хотели ее кешировать неограниченно.

В браузерах по-прежнему соблюдается Cache-Control и Expires заголовки, как с любым другим ответом, если они указаны.

Вы можете добавить заголовки, такие как Cache-Control: max-age=3600 или Expires: Thu, 01 Dec 2014 16:00:00 GMT, в свои 301 переадресацию. Вы даже можете добавить Cache-Control: no-cache, чтобы он не был постоянно кэширован браузером или Cache-Control: no-store, поэтому браузер не может быть сохранен в временном хранилище браузером.

Лучшая альтернатива на мой взгляд , однако, заключается в использовании перенаправления 302 или 307. Это не означает, что браузеры или кеши являются «перманентными» перенаправленными и поэтому не должны кэшироваться в отсутствие заголовков Cache-Control.

Мне кажется, что вы отправляете 301 редирект, но отмечая, что он не кэшируемый, идет против духа того, для чего предназначен переадресация 301, хотя это может быть технически обоснованным. YMMV, и вы можете найти крайние случаи, когда имеет смысл для «постоянного» перенаправления иметь ограничение по времени.

Если вы ранее выдали 301-редирект, но хотите отказаться от этого

Если у людей все еще есть переадресация 301 кеширования в своем браузере, они будут по-прежнему отправляться на целевую страницу независимо от того, имеет ли исходная страница редирект на месте. Ваши варианты для исправления этого включают в себя:

  • Самое простое и лучшее решение - снова отправить 301 перенаправление. Браузер поймет, что он обращается к тому, что, как считалось ранее, было отключенным URL-адресом, и это должно привести к повторному извлечению этого URL-адреса, чтобы подтвердить, что старое перенаправление еще не существует. Редактирование: некоторые комментарии ставят под сомнение это, см. ниже.
  • Если у вас нет контроля над сайтом, на котором была предыдущая цель перенаправления, тогда вам удача. Попробуйте попросить владельца сайта перенаправить обратно к вам.

Также предотвращение лучше, чем лечение - избегайте перенаправления 301, если вы не уверены, что хотите окончательно удалить комиссию старого URL.

216
ответ дан thomasrutter 18 August 2018 в 10:10
поделиться
  • 1
    Кроме того, есть ли у вас какие-либо ссылки, которые показывают, что браузеры обрабатывают циклические постоянные переадресации путем повторной выборки исходного URL? – Kevin Christopher Henry 16 February 2014 в 02:32
  • 2
    301 redirect back do`t work, браузер все еще кэширует старый 301 перенаправление, и я вижу бесконечный цикл – Yuriy Kolodovskyy 5 May 2014 в 23:37
  • 3
    как я это сделал: некоторое время назад я сделал 301 переадресацию для http://www.SOMEHOST.com в https://www.SOMEHOST.com. Но теперь http://www.SOMEHOST.com должен быть основным хостом для сайта. Таким образом, перенаправление с https на http удалено. Как вы показываете, я сделал перенаправление 301 с https://www.SOMEHOST.com до http://www.SOMEHOST.com, но вижу цикл. Браузер не переучивал ... – Yuriy Kolodovskyy 6 May 2014 в 08:49
  • 4
    Я подтверждаю, что перенаправление обратно (с перенаправлением PHP в моем случае) отлично работает в Google Chrome до тех пор, пока (очевидно) вы удалили первоначальный 301-редирект. – Vincent Poirier 14 March 2017 в 15:00
  • 5
    Я могу подтвердить, что перенаправление работает отлично. Браузеры, просматривающие цикл переадресации, аннулируют записи кэша. Протестировано на IE11, Firefox 52, Safari 10, Chrome 57. – Munhitsu 4 April 2017 в 16:14

Чтобы очистить постоянную переадресацию, перейдите в chrome: // net-internals. Справа от верхней красной строки состояния щелкните стрелку вниз ▼, чтобы открыть раскрывающееся меню, а в группе «Инструменты» выберите «Очистить кеш».

Начиная с версии 48, это было единственное, что помогло мне очистить кешированный 301.

158
ответ дан XP1 18 August 2018 в 10:10
поделиться
  • 1
    В настоящее время это лучший ответ. – Yuck 11 August 2016 в 18:20
  • 2
    Что касается Chrome версии 54, это, к сожалению, не работает для меня. – pwagner 16 December 2016 в 12:21
  • 3
    Я должен добавить, что у меня есть запись в моем / etc / hosts, указывающая домен на 127.0.0.1 - это, скорее всего, актуально. – pwagner 16 December 2016 в 12:23
  • 4
    работал в Chrome версии 57 – Steven Chanin 6 April 2017 в 23:45
  • 5
    С другой стороны, я действительно не ответил на вопрос real , «Сколько времени кешируют кеширование 301, & quot; и мой ответ не помог бы никому, кто перенаправил бы открытый сайт, где вам, вероятно, понадобится какой-то способ окончательно отменить 301, не зная, сколько браузеров в дикой природе кэширует перенаправление - другие ответы частично затрагивают этот сценарий. Мой ответ действительно полезен только разработчикам или сценариям интрасети, где вы можете общаться со всеми затронутыми пользователями. – McGuireV10 29 November 2017 в 14:47

Проверьте свои переадресации, используя режим инкогнито / InPrivate, поэтому, когда вы закроете браузер, он будет скрывать этот кеш, а повторное открытие окна не будет содержать кеш.

0
ответ дан yougotiger 18 August 2018 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: